Warum setzt Vim die maximale Textbreite auf 79 anstatt auf 80?

13

Ich bin ein wenig verwirrt über einige Standardwerte in Vim. Insbesondere wird dafür gq{motion}gesagt, dass

[...]
If the 'textwidth' option is 0, the formatted line
length is the screen width (with a maximum width of
79).

Ich dachte, dass es sinnvoller wäre, wenn 80stattdessen die maximale Breite auf gesetzt worden wäre .

Kann mich jemand aufklären? Ich vermisse etwas.

Atcold
quelle
1
Nun, 80ist ein ziemlich willkürlicher "Standard", also ... warum nicht 79? Das Umbrechen von Zeilen 79in einem 80spaltenbreiten Terminal lässt jetzt etwas mehr Platz nach rechts und kann die Lesbarkeit verbessern. github.com/vim/vim/blob/…
romainl
2
Vielleicht war am 80spaltenweiten Terminal die letzte Spalte für das Umbruchssymbol reserviert? Wenn Sie jedoch Zeilennummern verwenden, nehmen diese definitiv mehr als nur eine Spalte ein. Also bin ich immer noch verwirrt. Ist der von Ihnen verknüpfte Code außerdem 79der Maximalwert, den er verwenden kann? Vielleicht habe ich nicht verstanden, was ich gelesen habe.
Atcold
3
... oder Sie können einfach einstellen textwidthund fertig sein.
VanLaser
13
80 ist die Anzahl der Spalten der alten Hardware-Terminals und später der MS DOS-Bildschirme (Textmodus). tw=79Anstatt tw=80eine Zeile mit einer Länge von 80 Zeichen auf einem 80-Spalten-Terminal anzuzeigen, wird eine zusätzliche neue Zeile ausgegeben.
Sato Katsura
7
Eine neue Zeile wird immer hinzugefügt. Wenn es sich zufällig um das 81. Zeichen in einem 80 Zeichen breiten Terminal handelt, wird nur eine volle Zeile gefolgt von einer leeren Zeile angezeigt.
Sato Katsura

Antworten:

7

Ich habe keine Beweise dafür, dass 79 ursprünglich ausgewählt wurde, aber ein guter Grund , diesen Wert beizubehalten, ist, dass die Anzeige des Listenzeichens einen 80-Zeichen- Wert verursacht, wenn Sie 'list'einen Wert für eolin 'listchars'verwenden. Zeilenlänge, um die nächste Zeile in einem Terminal mit einer Breite von 80 Zeichen umzubrechen.

Wenn die Zeile nur 79 Zeichen lang ist, ist die 80. Spalte für das Zeilenende frei listchar.

Reich
quelle
Ich habe es nicht verstanden. Wo soll ich verwenden 'list'? Was soll es tun?
Am
@Atcold Diese Option bewirkt, dass Zeichen, die normalerweise nicht sichtbar sind (z. B. das Zeilenende), auf dem Bildschirm angezeigt werden. Sehen Sie :help 'list'oder versuchen Sie einfach, :set listes in Aktion zu sehen.
Rich
:set listtut nicht viel Ich wette, ich habe das nicht eolin der listchars. Ich bin mir nicht sicher, ob dies der Grund für die 79Charaktere ist. Ich glaube, @ sato-katsura hat die beste Antwort im Kommentar.
Atcold
eolist in 'listchars'der Standardeinstellung, aber es ist natürlich möglich, dass etwas in Ihrer Konfiguration es entfernt hat. Ich erkläre in meiner Antwort ausdrücklich, dass ich keinen Grund zu der Annahme habe, dass dies der historische Grund war, warum 79 ursprünglich gewählt wurde. Ich gebe nur einen weiteren Grund an, warum es weiterhin ein gutes Preis-Leistungs-Verhältnis ist.
Rich
@Atcold. Newline wird standardmäßig nicht angezeigt, es macht keinen Sinn, dafür ein zusätzliches Zeichen zu reservieren.
Christian Brabandt
6

Es ist wichtig zu erkennen , dass diese „default“ gilt nur für die gqund gwBefehle und Auto-Format wie in diesem Abschnitt beschrieben. Die Standardeinstellung textwidthist 0. Ferner :rightund :centerstandardmäßig auf 80, nicht 79.

Was , warum 79 gewählt wurde, kann sie nicht eine direkte Halt über von vi sein , da gq, gwund Auto-Format gibt es nicht in vi. Dies ist größtenteils eine Spekulation, aber ich glaube, die Standardeinstellung für das automatische Format wurde gewählt, um die Konsistenz mit dem vorhandenen automatischen Wrapping von vi zu gewährleisten. Dass dies zutrifft gqund gwein Nebeneffekt ist; man könnte erwarten, dass 80 anders gewählt worden wären.

In vi (und in vim if textwidth=0) beginnt der automatische Zeilenumbruch mit der Fensterbreite minus wrapmargin. In diesem wrapmargin=0Fall findet jedoch kein automatisches Wrapping statt. Dies bedeutet, dass bei Verwendung eines ADM-3A mit einer Beschränkung von 80 Zeichen mit wrapmargin=1die maximale Breite mit automatischem Zeilenumbruch 79 ist. Ein Vorteil dieses Verhaltens ist, dass der Cursor einen Platz zum Leben hat, während er darauf wartet, was zu sehen Das nächste Zeichen wird sein, bevor entschieden wird, wo es umbrochen werden soll. Natürlich könnten vi und vim den Cursor in die nächste Zeile setzen (wie bei der Eingabe eines sehr langen Wortes zu beobachten), aber eine zusätzliche Spalte zu lassen ist ein bisschen netter.

Masse
quelle