vim: отображение listchars меняет обтекание экрана - PullRequest
6 голосов
/ 18 марта 2010

Я заметил, что когда я показываю списки EOL в тексте, разрывы строк теряются

p.e.

 this is my text of this 
 message

становится после списка установок .. eol

 this is my text of this mess
 age(EOL CHAR)

Я хотел бы видеть символы EOL, не разбивая слова на границе окна. Это возможно?

1 Ответ

2 голосов
/ 18 марта 2010

К сожалению, похоже, что это задокументированное ограничение Vim. Из документации переноса строки (опция, которая вызывает разрывы строк для каждого слова вместо символа):

Эта опция не используется, если опция 'wrap' выключена или 'list' включен.

Альтернативное решение: выделите конец строки. Простой одноразовый способ - просто найти их (/ $). Кроме того, вы можете использовать подсветку:

:highlight endofline ctermbg=Green
:match endofline /$/

Это даст вашему EOLs зеленый фон. См. :help highlight-args для получения дополнительной информации о том, как вы можете указать выделение.

Оригинальный ответ

Это не настоящая проблема ОП, но иногда это может произойти, поэтому я оставлю это здесь, чтобы другие могли найти при поиске.

Из справки по 'list':

Обратите внимание, что режим списка также влияет на форматирование (устанавливается с помощью 'textwidth' или 'wrapmargin'), когда 'cpoptions' включает в себя 'L'. См. «Listchars» для изменения способа отображения вкладок.

Из справки по 'cpoptions':

L Когда опция 'list' установлена, 'wrapmargin', 'textwidth', 'softtabstop' и режим Virtual Replace (см. | GR |) считают a как два символа, вместо нормального поведения a. *

'cpoptions' - это все о совместимости с vi - запускаете ли вы vim как vi? Или вы вручную установить любой из этих флагов? Проверьте вывод echo &cpoptions, обязательно запустите как vim, и если он все еще установлен (не знаю, почему это так), вы можете сбросить флаг (set cpoptions-=L).

И, конечно же, убедитесь, что настройки для wrap, wrapmargin, linebreak и textwidth соответствуют вашим требованиям.

...