Чому Vim встановлює максимальну ширину тексту на 79 замість 80?


13

Я трохи спантеличений деякими значеннями за замовчуванням у Vim. Зокрема, для gq{motion}, як це сказано

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

Я подумав, що це повинно було мати більше сенсу, якби він встановив максимальну ширину 80замість цього.

Може хтось просвітить мене з цього приводу? Я думаю, мені щось не вистачає.


1
Що ж, 80досить довільний "стандарт" для початку так ... чому б і ні 79? Тепер, обгортання лінії на 79в 80колонках шириною в терміналі дає трохи більше місця праворуч і може поліпшити читаність. github.com/vim/vim/blob/…
romainl

2
Може на 80останньому стовпчику терміналу останній стовпчик був зарезервований для символу загортання? Тим не менш, якщо у вас введені номери рядків, вони обов'язково займуть більше, ніж один стовпець. Отже, я все ще спантеличений. Більше того, з коду, який ви зв'язали, є 79максимальне значення, яке воно може бути використане? Можливо, я не зрозумів, що читав.
Atcold

3
... або ви можете просто встановити textwidthі зробити це.
VanLaser

13
80 - кількість стовпців старих апаратних терміналів, а пізніше екранів MS DOS (текстовий режим). tw=79замість того, tw=80що відображення рядка довжиною 80 символів на терміналі 80 стовпців друкує додатковий новий рядок.
Сато Кацура

7
Завжди додається новий рядок. Якщо це 81-й символ на терміналі, що має 80 символів, ви отримуєте повний рядок, а потім порожній.
Сато Кацура

Відповіді:


7

Я не маю жодних доказів того, що це було причиною того, що 79 було обрано спочатку, але одна з вагомих причин залишати його за цим значенням полягає в тому, що якщо ви використовуєте 'list'значення, включене eolв, 'listchars'то відображення списку списку призведе до 80-символів, лінія довжини, щоб перейти на наступний рядок у терміналі на 80 символів.

Якщо у рядку довжина всього 79 символів, то 80-й стовпець вільний для кінця рядка listchar.


Я цього не зрозумів. Де я повинен використовувати 'list'? Що це робити?
Atcold

@Atcold Це варіант, завдяки якому на екрані відображаються символи, які зазвичай невидимі (наприклад, кінець рядка). Побачте :help 'list'або просто спробуйте запустити, :set listщоб побачити це в дії.
Багатий

:set listне робить багато. Я тримаю парі , що не має eolв listchars. Я не дуже впевнений, що це причина в 79персонажах. Я вважаю, що @ sato-katsura має найкращу відповідь у коментарі.
Atcold

eolзнаходиться в 'listchars'за замовчуванням, але, звичайно , це можливо , що - то у вашій конфігурації видалила його. Я конкретно заявляю у своїй відповіді, що у мене немає підстав вважати, що це була історична причина того, що 79 було обрано спочатку. Я просто даю ще одну причину, чому вона продовжує залишатися хорошою цінністю.
Багатий

@Atcold. Нова лінія не відображається за замовчуванням, не має сенсу резервувати додатковий символ для цього.
Крістіан Брабандт

6

Важливо розуміти , що це « по умовчанням» відноситься тільки до gqі gwкомандам і авто-формату , як описано в цьому розділі. Значення за замовчуванням textwidthдорівнює 0. Крім того, :rightі по :centerзамовчуванням 80, а НЕ 79.

А чому 79 було обраний, він не може бути прямим утримування в протягом від VI , так як gq, gwі авто-формат не існує в VI. Це в основному міркування, але я вважаю, що 79 за замовчуванням для автоматичного форматування було обрано для відповідності існуючим автоматичним обгортанням vi. Це стосується gqі gwє побічним ефектом; можна очікувати, що 80 було б обрано інакше.

textwidth=0Текст in vi (і in vim if ) текст починає автоматично обгортати на мінус ширині вікна wrapmargin. Однак, якщо wrapmargin=0, автоматичне обгортання не відбудеться. Це означає, що якщо ви використовували ADM-3A з обмеженням 80 символів, при wrapmargin=1цьому максимальна ширина з автоматичним загортанням становить 79. Назустріч цій поведінці є те, що курсор має місце жити, поки чекає, щоб побачити, що наступним персонажем буде перед тим, як вирішити, куди загорнути. Звичайно, vi і vim можуть поставити курсор у наступний рядок (як це спостерігалось під час введення дуже довгого слова), але залишити зайвий стовпець трохи приємніше.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.