有什么方法可以使Vim / gVim在当前文档中突出显示右边距?我刚刚开始与Vim合作了一段时间,但我发现在第80栏没有右边距的情况下,它很烦人。
Vim 7.3引入的颜色列。
:set colorcolumn=80
您可能更容易记住该简短形式。
:set cc=80
没有简单的方法可视化textwidth
-margin(在Vim 7.2及更早版本中;从7.3版本开始,有一个专用的colorcolumn
选项)。但是,可以强调使用:match
命令,所有超出80列限制的字符:
:match ErrorMsg /\%>80v.\+/
我们需要使其成为通用解决方案,就是建立匹配动态替换为textwidth
的正确值选项:
:autocmd BufWinEnter * call matchadd('ErrorMsg', '\%>'.&l:textwidth.'v.\+', -1)
我在.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>
我已经为7.2之类的较旧Vim版本重写了the answer的Jonathan 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>