Чи є спосіб зробити так, щоб Vim / gVim виділяв право поле поточного буфера? Я щойно почав працювати з Vim, і мене дратує, якщо не відображається правильне поле (у стовпці 80).
Чи є спосіб зробити так, щоб Vim / gVim виділяв право поле поточного буфера? Я щойно почав працювати з Vim, і мене дратує, якщо не відображається правильне поле (у стовпці 80).
:set cc=81або щодо TextWidth: :set cc=+1.
Відповіді:
Vim 7.3 представив кольорову колонку.
:set colorcolumn=80
Можливо, вам буде легше запам’ятати коротку форму.
:set cc=80
Немає простого способу візуалізації вертикального ребра для
textwidth-поля у Vim 7.2 або раніше; починаючи з версії 7.3, є спеціальна colorcolumnопція. Однак за допомогою :matchкоманди можна виділити всі символи, що перевищують обмеження в 80 стовпців :
:match ErrorMsg /\%>80v.\+/
Все, що нам потрібно, щоб зробити це загальним рішенням, - це побудувати шаблон збігу на льоту, щоб замінити правильне значення textwidth
опції:
:autocmd BufWinEnter * call matchadd('ErrorMsg', '\%>'.&l:textwidth.'v.\+', -1)
Я написав функцію vimscript у своєму .vimrc для перемикання колонки при натисканні, 8 (кома, за якою слідує 8, де кома - це визначений лідер для визначених користувачем команд, а вісім - мій мнемонічний ключ для 'show margin at 80-а колонка):
" toggle colored right border after 80 chars
set colorcolumn=81
let s:color_column_old = 0
function! s:ToggleColorColumn()
if s:color_column_old == 0
let s:color_column_old = &colorcolumn
windo let &colorcolumn = 0
else
windo let &colorcolumn=s:color_column_old
let s:color_column_old = 0
endif
endfunction
nnoremap <Leader>8 :call <SID>ToggleColorColumn()<cr>
:nnoremap <expr> <leader>8 &cc?':let &cc=0<CR>':':let &cc=80<CR>'
Я ніколи переписаний відповідь на Джонатан Хартлі для старих версій Vim як 7.2 так як немає colorcolumnв старих ВІМСе.
highlight OverLength ctermbg=red ctermfg=white guibg=#592929
let s:OverLengthToggleVariable=0
function! ToggleOverLength()
if s:OverLengthToggleVariable == 0
match OverLength /\%81v.\+/
let s:OverLengthToggleVariable=1
else
match OverLength //
let s:OverLengthToggleVariable=0
endif
endfunction
" I like <leader>h since highlight starts with h.
nnoremap <leader>h :call ToggleOverLength()<cr>