Правый край в Vim

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

Ответ 1

Vim 7.3 ввел цветную колонку.

:set colorcolumn=80

Вам может быть проще запомнить короткую форму.

:set cc=80

Ответ 2

Нет простого способа визуализации вертикального края textwidth -margin (в Vim 7.2 и ранее). Однако можно выделить все символы за пределами 80 столбцов ограничены использованием команды :match.

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

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

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

Ответ 3

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

Ответ 4

Я переписал ответ Джонатана Хартли для более старых версий Vim, таких как 7.2, поскольку есть no 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>