Notepad++ tabsize vs indentálás

Na, most túljárt az eszemen a szoftver: egyszerűen nem találok benne olyan opciót, hogy egyszerre csináljon két dolgot:

1. a TAB billentyűre menjen a következő 4k+1. pozícióra (értelmeszerűen szóközök beszúrásával; ha akarja, optimalizálja a szóközöket TAB karakterekkel, de a következő pont figyelmbevételével)

2. a TAB karakter hatására menjen a következő 8k+1. pozícióra

A korszerűtlen grafikátlan mcedit-ben ez az "Options / General / Tabulation / Fake half tabs" nevű feature.

Hozzászólások

Ez mire jó?
Pythonban voltam érdekel, az kimondottan hisztis a space/tab keverésére

Hoppá, azt nem mondtam, hogy C/Java/Js/Html/etc (forrás)programok szerkesztéséről volna itten szó. Akkor most mondom.

Talán ott kezdeném, hogy zsenge úrfi koromban mindig új programokat írtam, mindig egyedül, mindig a saját szórakoztatásomra. Szóval beállíthattam volna az editorban a TAB karakter értelmezését mínusz 3.8 szóközre is, az sem zavart volna senkit.

Aztán az elmúlt 25 évben mindig másokkal együtt kellett dolgoznom, pénzért, méghozzá többnyire meglévő kód fejlesztésén.

Szóval az nagyon szép dolog, hogy én (vagy bárki) 2/3/4/n karakter széles indentációval (ezt manapság néha behuzás (punch) néven emlegetik) szeretnék alkotni, de ettől még a TAB karakter a 8k+1-edik pozicíóra lépést jelenti a hagyományok szerint. (Tudom, itt meg lehetne emlékezni a programozható TAB-pozíciókról, meg a formátumozott képernyőkről, csak ezek nem nagyon tartoznak ide.)

Következésképpen az volna a jó, ha az editor is adna olyan opciót, hogy pl: indentation=4, TAB-positions=standard/8, optimize-spaces-with-TABs=yes/no/idontcare

Renden, de akár ide, akár oda, nem tehetek fel minden kolléga Windows-ára mcedit-et... Már kezdem azt hinni, hogy maradunk a tabsize=8-nál, viszont az indentálás legyen 4xSpace kézileg nyomkodva. 19118-ban nem rossz. (Bocs, 2018, megint előjött a régi Y2000 probléma.)

"ettől még a TAB karakter a 8k+1-edik pozicíóra lépést jelenti a hagyományok szerint."
Nem. A TAB karakter az pontosan egy behúzást jelöl. Logikai dolog. Az, hogy ez a behúzás mekkora, az más kérdés (ott van behúzás, ahol tabulator stop van). Egy írógépen általában egy behúzást lehetett beállítani. Szó nincs itt programozható pozíciókról stb. A tabulálás, a tabulátor billentyű (és ennek modellje, a TAB karakter) az írógépektől ered a számítástechnikába. És nem, semmi köze a 8k+1-hez. Max. te úgy ismerted és úgy szoktad meg. De attó lmég a tab mérete változó: pontosan a következő tab stopig tart.

A behúzás szót meg nem manapság találták ki, hanem egy nyomdai szakszó, évszázadok óta használják.

Ez is hasznos információ, köszönet érte. Mondjuk azon nem segít, hogy itt text-fájlokról van szó, ahol tipikusan nincs olyan meta-információ, hogy "na ebben a fájlban a tabstop-ok így állnak: 1, 10, 16, 40"

Vagy nézhetünk itt és most egy példát (AAA\tBBB):


AAA	BBB

Hány szóközt mutat a borzolóprogram AAA és BBB között?

Egy tab (behúzás) valójában nem x darab szóköz hosszúságú a nyomdászatban.
Hanem általában két kvirt, ha egy új bekezdés első sorának behúzásáról van szó. Megvannak rá a tipográfiai szabályok, hogy mikor mekkora behúzást kell használni.

Az, hogy egy TAB karakter a számítógépen milyen széles legyen, megint csak más kérdés. Proporcionális betűknél, igényes szövegszerkesztésnél nincs is értelme azt mondani, hogy hány szóköz legyen - hiszen például sorkizárt szövegben a szóközök változó szélességűek.

Az más kérdés, ha azt akarod kérdezni, hogy a monospace betűket és téglalaprácsot használó (1 téglalap = 1 karakter) szövegtördelésben hány téglalap szélességű legyen egy behúzás. Ez meg sok mindentől függ. De attól még nem igaz az, hogy a tabulátor = x db szóköz.
Az igaz, hogy a tabulátor szélessége x db betű szélességének felel meg (és tök mindegy, melyik betűé), ha írógépbetűt használ az ember. Nem mondhatod, hogy x darab szóköz a szélessége, hiszen ugyanúgy igaz az is, hogy x db b betű szélességű hely, x db M betű szélességű hely stb.

A "borzolóprogram" nem x db szóközt, hanme x kitöltetlen helyet mutat AAA és BBB között. És pont annyit, amennyit megmondasz neki, hogy hány karakterhelyet ér 1 behúzás.

Én még mindig tartom, hogy hibás úgy gondolni a TAB karakterre, mint x db szóköz. Az egy x szélességű kihagyott karakterhelyet jelent.

A TAB-nak van szemantikus jelentése. És nem azt jelenti, hogy x db szóköz.
A CR-nek, LF-nek is van szemantikus jelentése. Például egy 80 soros szövegben a harmadik pozícióra tett CR és a negyedik pozícióra tett LF sem jelent 77 szóközt.
Hagyjuk meg minden vezérlőkaraktert annak, amit jelent és ne próbáljuk "x db szóköz" formára átfordítani.

Szerintem.

Köszönöm a sok hasznos kiegészítő információt, ezeknek a fényében szeretném árnyalni a kérdésemet: Az alábbi példában hányadik pozícióra kerül a 'BBB' rész, és miért éppen a kilencedikre (most tegyük fel, hogy a fair play jegyében nem kezdünk pánikszerűen a userContent.css irányába kapkodni a kérdés megválaszolása előtt)


AAA	BBB