我在Vim中做80列指示的方式似乎不正确:set columns=80。 有时我也设置文本宽度,但我希望能够看到和预期行溢出设置列替代。

这有一些不幸的副作用:

我不能设置数字,因为害怕在行号顺序不同的文件之间分裂;例如,< 100行文件和>= 100行文件将需要两个不同的设置列值,因为额外的列用于额外的数字显示。 我还启动了新的(g)Vim会话,而不是垂直分割窗口。这是因为vsplit迫使我在每次打开或关闭一个窗格时设置列,因此启动一个新会话不那么麻烦。

当您想要设置数字、垂直分割等时,如何处理80个字符的指示?


当前回答

一个很好的方法来标记第一个超出指定边界的字符:

highlight ColorColumn ctermbg=magenta "set to whatever you like
call matchadd('ColorColumn', '\%81v', 100) "set column nr

来自达米安·康威的演讲。

其他回答

这是一个很好的小地图,如果你有行号,它可以把你当前的分割大小调整到80个字符:

" make window 80 + some for numbers wide  
noremap <Leader>w :let @w=float2nr(log10(line("$")))+82\|:vertical resize <c-r>w<cr> 

短:

match ErrorMsg '\%>80v.\+'

我在我的。vimrc中设置了这个:

highlight OverLength ctermbg=red ctermfg=white guibg=#592929
match OverLength /\%81v.\+/

这将为超过80列限制的文本以微妙的红色突出显示背景(无论如何,在GUI模式中很微妙-在终端模式中就不那么明显了)。

一个很好的方法来标记第一个超出指定边界的字符:

highlight ColorColumn ctermbg=magenta "set to whatever you like
call matchadd('ColorColumn', '\%81v', 100) "set column nr

来自达米安·康威的演讲。

从vim 7.3开始,您可以使用set colorcolumn=80(简称set cc=80)。

由于早期版本不支持这一点,我的.vimrc使用:

if exists('+colorcolumn')
  set colorcolumn=80
else
  au BufWinEnter * let w:m2=matchadd('ErrorMsg', '\%>80v.\+', -1)
endif

另请参阅有关colorcolumn选项的在线文档。