Проблемы компоновки столбцов Vim 80



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



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



как вы справляетесь с 80-символьной индикацией, когда вы хотите set numbers, вертикально разделенный, etc.?

611   14  

14 ответов:

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

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

это выделяет фон в тонком красном цвете для текста, который превышает предел столбца 80 (тонкий в режиме GUI, во всяком случае - в терминальном режиме это меньше).

начиная с 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 . Поэтому я сделал небольшую настройку, основанную на материале, который я нашел на ВИМ Вики и выбор HS цветов выше:

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

и теперь VIM будет выделять все, что превышает столбец 80. Ура!

enter image description here

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

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),",")

результат:

enter image description here

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

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

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

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

Вы можете попробовать это:

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 имеет значение, и один для символов за пределами этого столбца. Таким образом, у вас есть некоторая степень ожидания. Конечно, вы можете настроить его на использование другой ширины, если хотите больше или меньше ожидания (которое вы платите за потерю подсветки синтаксиса в этих столбцах).

Ну, глядя на столбцы: help, на самом деле это не делается, чтобы возиться.

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

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

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

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

" make window 80 + some for numbers wide  
noremap <Leader>w :let @w=float2nr(log10(line("$")))+82\|:vertical resize <c-r>w<cr> 

вы можете попробовать это, чтобы установить размер окна позволяет 80 символов текста. Это все еще не работает с вертикальными расколами, хотя.

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

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

Comments

    Ничего не найдено.