Я немного озадачен некоторыми значениями по умолчанию в Vim. В частности gq{motion}
, сказано, что
[...]
If the 'textwidth' option is 0, the formatted line
length is the screen width (with a maximum width of
79).
Я думал, что это должно было бы иметь больше смысла, если бы 80
вместо этого было установлено значение максимальной ширины .
Может ли кто-нибудь просветить меня об этом? Я думаю, я что-то упустил.
formatting
Atcold
источник
источник
80
для начала это довольно произвольный "стандарт", так что ... почему бы и нет79
? Теперь, перенос строк79
в80
терминале шириной в столбцы дает немного больше места справа и может улучшить читаемость. github.com/vim/vim/blob/…80
терминале на всю колонну последний столбец был зарезервирован для символа переноса? Тем не менее, если у вас есть номера строк, то они определенно займут более одного столбца. Итак, я все еще озадачен. Кроме того, из того кода, который вы связали, является79
ли его максимальное значение? Может быть, я не понял, что я читаю.textwidth
и покончить с.tw=79
а неtw=80
потому, что при отображении строки длиной 80 символов на терминале 80 столбцов выводится дополнительная новая строка.Ответы:
У меня нет никаких доказательств того, что именно поэтому изначально был выбран 79, но одна веская причина оставить его на этом значении, потому что, если вы используете
'list'
со значением, включенным дляeol
в,'listchars'
то отображение listchar вызовет 80-символьный длина строки для переноса на следующую строку в терминале шириной 80 символов.Если длина строки составляет всего 79 символов, тогда 80-й столбец свободен для конца строки
listchar
.источник
'list'
? Что он должен делать?:help 'list'
или просто попробуйте запустить,:set list
чтобы увидеть это в действии.:set list
не делает много Могу поспорить, у меня нетeol
вlistchars
. Я не очень уверен, что это причина для79
персонажей. Я считаю, что @ sato-katsura имеет лучший ответ в комментарии.eol
включен'listchars'
по умолчанию, но, конечно, возможно, что-то в вашем конфиге это удалило. Я специально заявляю в своем ответе, что у меня нет оснований полагать, что это была историческая причина, по которой 79 был первоначально выбран. Я просто привожу еще одну причину, по которой он по-прежнему является хорошим значением для использования.Важно понимать , что это « по умолчанию» относится только к
gq
иgw
командам и авто-формату , как описано в этом разделе. Значение по умолчаниюtextwidth
равно 0. Кроме того,:right
и по:center
умолчанию 80, а не 79.А почему 79 было выбран, он не может быть прямым удерживания в течение от VI , так как
gq
,gw
и авто-формат не существует в VI. В основном это предположение, но я считаю, что значение 79 для автоматического форматирования было выбрано для согласованности с существующим автоматическим переносом в vi. То, что это относитсяgq
иgw
является побочным эффектом; Можно ожидать, что 80 был бы выбран в противном случае.В vi (и в vim if
textwidth=0
) текст начинает автообтекание при минус ширине окнаwrapmargin
. Тем не менее, еслиwrapmargin=0
автоматическая упаковка не будет выполнена. Это означает, что если вы использовали ADM-3A с пределом в 80 символов,wrapmargin=1
максимальная ширина с автоматическим переносом составляет 79. Преимуществом этого поведения является то, что есть место для курсора, чтобы жить во время ожидания, чтобы увидеть, что следующий персонаж будет перед тем, как решить, где его переносить. Конечно, vi и vim могут поместить курсор на следующую строку (как это видно при наборе очень длинного слова), но оставить лишний столбец немного приятнее.источник