Правое поле в Vim


есть ли способ заставить Vim/gVim выделить правое поле в текущем документе? Я только начал работать с Vim на некоторое время, и я нашел его раздраженным без правого поля в столбце 80.

4 70
vim

4 ответа:

Vim 7.3 представил colorcolumn.

:set colorcolumn=80

возможно, Вам будет легче запомнить короткую форму.

:set cc=80

нет простого способа визуализировать вертикальный край textwidth-маржа (в Vim 7.2 и выше). Тем не менее, можно выделить все символы после ограничение 80 столбцов с помощью .

:match ErrorMsg /\%>80v.\+/

Итак, общее решение заключается в использовании следующей автоматической команды.

:autocmd BufWinEnter * call matchadd('ErrorMsg', '\%>'.&l:textwidth.'v.\+', -1)

Я написал функцию vimscript в моем .vimrc для переключения colorcolumn, когда я нажимаю, 8 (запятая, за которой следует 8, где запятая-определенный лидер для пользовательских команд, а восемь - мой мнемонический ключ для " показать поле в 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>

я переписал ответ на Джонатан Хартли для старых версий Vim, таких как 7.2, поскольку нет colorcolumn в старых Vims.

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>