Vim中的右边距

问题描述 投票:74回答:4

有什么方法可以使Vim / gVim在当前文档中突出显示右边距?我刚刚开始与Vim合作了一段时间,但我发现在第80栏没有右边距的情况下,它很烦人。

vim
4个回答
116
投票

Vim 7.3引入的颜色列。

:set colorcolumn=80

您可能更容易记住该简短形式。

:set cc=80

19
投票

没有简单的方法可视化textwidth-margin(在Vim 7.2及更早版本中;从7.3版本开始,有一个专用的colorcolumn选项)。但是,可以强调使用:match命令,所有超出80列限制的字符:

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

我们需要使其成为通用解决方案,就是建立匹配动态替换为textwidth的正确值选项:

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

7
投票

我在.vimrc中编写了一个vimscript函数,当我按下,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>

2
投票

我已经为7.2之类的较旧Vim版本重写了the answerJonathan Hartley,因为在较旧的Vims中没有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>
© www.soinside.com 2019 - 2024. All rights reserved.