Распределение столбцов Vim 80

Я чувствую, что способ, которым я показываю 80-столбцовую индикацию в Vim, неверен: set columns=80 . Иногда я также set textwidth но мне нравится видеть и outlookировать переполнение строки с альтернативными альтернативными set columns .

У этого есть некоторые неудачные побочные эффекты – я не могу set number опасаясь расщепления между файлами, которые имеют разные порядки номеров строк; т.е. = 100 строк, потребуются два разных значения set columns из-за дополнительного столбца, используемого для дополнительного отображения цифр. Я также начинаю новую (g) сессию Vim вместо разбиения окон по вертикали, что заставляет меня использовать буфер обмена оконного менеджера – vsplit s заставляет меня делать set columns каждый раз, когда я открываю или закрываю панель, поэтому начало нового сеанса меньше хлопот.

Как вы обрабатываете 80-значную индикацию, когда хотите set numbers , вертикально разделить и т. Д.?

У меня это установлено в моем .vimrc:

 highlight OverLength ctermbg=red ctermfg=white guibg=#592929 match OverLength /\%81v.\+/ 

Это подчеркивает фон в тонком красном для текста, который выходит за пределы 80 столбцов (тонкий в режиме графического интерфейса, в любом случае – в терминальном режиме это меньше).

Начиная с vim 7.3, вы можете использовать set colorcolumn=80 (для краткости set cc=80 ).

Поскольку более ранние версии этого не поддерживают, вместо этого используется мой .vimrc :

 if exists('+colorcolumn') set colorcolumn=80 else au BufWinEnter * let w:m2=matchadd('ErrorMsg', '\%>80v.\+', -1) endif 

См. Также онлайн-документацию по опции colorcolumn .

Более короткий путь:

 match ErrorMsg '\%>80v.\+' 

Я предпочитаю:

 highlight ColorColumn ctermbg=gray set colorcolumn=80 

Ответ Саймона Говарда велик. Но /\%81v.\+/ не выделяет вкладки, которые превышают столбец 81. Поэтому я сделал небольшую настройку, основываясь на материалах, которые я нашел на VIM-вики и выборе цветов HS выше:

 highlight OverLength ctermbg=darkred ctermfg=white guibg=#FFD9D9 match OverLength /\%>80v.\+/ 

И теперь VIM выделит все, что превышает колонку 80. Приветствия!

введите описание изображения здесь

Минималистичный подход, но не более. Выделяется только 79-й символ слишком длинных строк. Он преодолевает несколько распространенных проблем: работы над новыми windowsми, переполненные слова подсвечиваются должным образом.

 augroup collumnLimit autocmd! autocmd BufEnter,WinEnter,FileType scala,java \ highlight CollumnLimit ctermbg=DarkGrey guibg=DarkGrey let collumnLimit = 79 " feel free to customize let pattern = \ '\%<' . (collumnLimit+1) . 'v.\%>' . collumnLimit . 'v' autocmd BufEnter,WinEnter,FileType scala,java \ let w:m1=matchadd('CollumnLimit', pattern, -1) augroup END 

Примечание: обратите внимание на FileType scala,java ограничивает это исходными файлами Scala и Java. Вы, вероятно, захотите настроить это. Если вы опустите его, он будет работать на всех типах файлов.

Хороший способ отметить только первый символ, выходящий из указанных границ:

 highlight ColorColumn ctermbg=magenta "set to whatever you like call matchadd('ColorColumn', '\%81v', 100) "set column nr 

Из беседы Дамиана Конвей.

Вы также можете нарисовать линию, чтобы увидеть предел 80:

 let &colorcolumn=join(range(81,999),",") let &colorcolumn="80,".join(range(400,999),",") 

Результат:

введите описание изображения здесь

Более новые версии vim позволяют :set numberwidth=x , которое устанавливает ширину отображения номера строки. Я действительно не использую складные и т. Д., Поэтому я бы не знал об этом. Однако рисование тонкой вертикальной линии выходит за frameworks возможностей консольного приложения. GVim может разрешить это (я не использую его, поэтому не могу комментировать там).

Вы можете попробовать следующее:

 au BufWinEnter * if &textwidth > 8 \ | let w:m1=matchadd('MatchParen', printf('\%%<%dv.\%%>%dv', &textwidth+1, &textwidth-8), -1) \ | let w:m2=matchadd('ErrorMsg', printf('\%%>%dv.\+', &textwidth), -1) \ | endif 

Это создаст два основных момента в каждом буфере: один для символов в 8 столбцах до того, как будет установлен ваш &textwidth , и один для символов за пределами этого столбца. Таким образом, у вас есть некоторое ожидание. Конечно, вы можете настроить его, чтобы использовать другую ширину, если хотите больше или меньше ожидания (которое вы платите в виде потери подсветки синтаксиса в этих столбцах).

Я боюсь, что вы наложили ограничения на набор решений, которые, ну, оставляют вас с нулевым набором.

Использование :set textwidth=80 устранит все проблемы, о которых вы упомянули, за исключением того, что вы не можете легко увидеть :set textwidth=80 линии. Если вы :set ruler , вы включите отображение позиции x, y в строке состояния, которую вы можете использовать, чтобы увидеть, в каком столбце вы находитесь.

Кроме того, я не уверен, что вам сказать. Стыдно потерять столбец числа, свернуть столбец и разбить только потому, что вам нужно :set columns=80 .

Ну, глядя на колонки справки, на самом деле это не делается, чтобы возиться.

В консоли обычно определяется настройкой консоли (т. Е. Автоматически определяется); в GUI он определяет (и определяется) ширину окон gvim.

Так что обычно вы просто позволяете консолям и оконным менеджерам выполнять свою работу, комментируя set columns

Я не уверен, что вы подразумеваете под «видеть и предвидеть переполнение строки». Если вы хотите, чтобы EOL был вставлен примерно в колонку 80, используйте либо set textwidth либо set wrapmargin ; если вы просто хотите мягкую упаковку (т. е. обернута линия, но нет фактического EOL), затем играйте с set linebreak и set showbreak .

это одно из левого поля, но его симпатичная маленькая карта для изменения размера текущего разделения до 80 символов, если у вас есть номера строк:

 " make window 80 + some for numbers wide noremap w :let @w=float2nr(log10(line("$")))+82\|:vertical resize w 

Вы можете попробовать это, чтобы установить размер windows, чтобы разрешить 80 символов фактического текста. Однако это все еще не работает с вертикальными расколами.

let &co=80 + &foldcolumn + (&number || &relativenumber ? &numberwidth : 0)

Для этого требуется vim 7+, 7.3 для relativenumber.

Давайте будем гением компьютера.