我在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列的任何内容。

其他回答

简约,不夸张的方法。如果行太长,则只突出显示第79个字符。它克服了一些常见的问题:在新窗口工作,溢出的单词被正确地突出显示。

augroup collumnLimit
  autocmd!
  autocmd BufEnter,WinEnter,FileType scala,java
        \ highlight CollumnLimit ctermbg=DarkGrey guibg=DarkGrey
  let collumnLimit = 79 " feel free to customize
  let pattern =
        \ '\%<' . (collumnLimit+1) . 'v.\%>' . collumnLimit . 'v'
  autocmd BufEnter,WinEnter,FileType scala,java
        \ let w:m1=matchadd('CollumnLimit', pattern, -1)
augroup END

注意:请注意文件类型限制为scala和java源文件。您可能需要自定义它。如果省略它,它将适用于所有文件类型。

短:

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

恐怕你已经在解集上加上了约束条件,只剩下一个空集。

使用:set textwidth=80将解决你提到的所有问题,除了你不容易看到行数限制。如果您:设置标尺,您将启用状态栏上的x,y位置显示,您可以使用它来查看您处于哪一列。

除此之外,我不知道该跟你说什么。很遗憾丢失了数字列,折叠列和分割,因为你必须:set columns=80。

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

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

结果:

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

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

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