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

这有一些不幸的副作用:

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

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


当前回答

Simon Howard的回答很好。但/ \ % 81 v。\+/不能突出显示超过81列的制表符。所以我做了一个小小的调整,基于我在VIM wiki上找到的东西和HS上面的颜色选择:

highlight OverLength ctermbg=darkred ctermfg=white guibg=#FFD9D9
match OverLength /\%>80v.\+/

现在VIM将突出显示超过第80列的任何内容。

其他回答

你也可以画线看看80的极限:

let &colorcolumn=join(range(81,999),",")
let &colorcolumn="80,".join(range(400,999),",")

结果:

您可以尝试将窗口大小设置为允许实际文本的80个字符。但这仍然不适用于垂直分割。

Let &co=80 + &foldcolumn + (&number || &relativenumber ?&numberwidth: 0)

这需要vim 7+, 7.3的相对数字。

看一下:help列,它并不是真的被用来捣乱的。

在主机中,这通常是由主机设置决定的(即自动检测);在GUI中,它决定了(也被决定了)gvim窗口的宽度。

因此,通常情况下,您只需让控制台和窗口管理器通过注释掉set列来完成它们的工作

我不确定你说的“看到和预期排队溢出”是什么意思。 如果你想要EOL大约插入列80,使用set textwidth或set wrapmargin;如果你只是想要软换行(即行被换行,但没有实际的EOL),然后使用设置linebreak和设置showbreak。

从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选项的在线文档。

Simon Howard的回答很好。但/ \ % 81 v。\+/不能突出显示超过81列的制表符。所以我做了一个小小的调整,基于我在VIM wiki上找到的东西和HS上面的颜色选择:

highlight OverLength ctermbg=darkred ctermfg=white guibg=#FFD9D9
match OverLength /\%>80v.\+/

现在VIM将突出显示超过第80列的任何内容。