在 Vim 中显示超过80个字符的不同背景颜色

我看过 Vim 80列布局问题,但是那里的答案只强调了超过80个字符的实际内容。我想有一个100 + 列 Vim 窗口打开与最左边的80列使用正常的背景和任何使用稍微不同的背景过去。Vim 窗口背景应该是不同的颜色,而不仅仅是超过80个字符点的文本。这将表明我离80个字符点有多近,而不需要首先检查它。

我觉得现在不太可能,但以防万一,我还是问问。

也许可以用一个插件来完成?

所需 Vim 右边距高亮显示的 TextMate 示例

通过在 TextMate 的一般首选项中选择“突出显示右边距”,您可以看到所需的 Vim 行为的示例。

TextMate Right Margin Highlighted Example

59680 次浏览

我觉得你不可能得到你想要的, 但是我关注这个问题,因为我感兴趣 我自己也是这样。

也许,我说的很明显,但你可以设计 在第70 + 栏的突出显示,以获得一个指示 你离第80纵队有多近。

突出81列

:set textwidth=80
:set colorcolumn=+1

你也可以做一些造型:

:hi ColorColumn guibg=#2d2d2d ctermbg=246

尝试:

:/\%>80v./+

它将把 + 80个字符标记为错误

上述评论中提出的解决方案。首先突出显示您的背景,然后突出显示黑色的颜色列作为一个覆盖。将颜色列设置为第1-80行。

hi Normal guibg=#32322f ctermbg=236
hi NonText guibg=#32322f ctermbg=236
hi ColorColumn guibg=#000000 ctermbg=0
let &colorcolumn=join(range(1,80),",")

如果 Vim > = v7.3,您可以简单地将其添加到 .vimrc中以突出显示81及以后的内容(因此80是最后一个有效列) :

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

如果没有看到突出显示,则可能没有 ColorColumn突出显示颜色集。添加以下内容(根据您的喜好进行调整) :

highlight ColorColumn ctermbg=235 guibg=#2c2d27

现在我喜欢突出显示第80列以及120列及以后的列,因此我有单独的“警告”和“危险”标记。你可以这样做:

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

例子

这里是一个截图的 GVim 编辑我的 .vimrc

GVim editing my .vimrc

我使用 UbuntuMono11字体和 Molokai配色方案。你可以在 GitHub 上找到我的 Vim 配置和我所有的 Dotfiles

对于那些像我一样使用 onedark.vim、希望 Conner 发布解决方案的用户,我将这些代码行添加到我的 vimrc 文件中

let &colorcolumn=join(range(1,80),",")
let g:onedark_color_overrides = {
\ "black": {"gui": "#2C323C", "cterm": "236", "cterm16": "8"},
\ "cursor_grey": {"gui": "#282C34", "cterm": "235", "cterm16": "0"}
\ }

我只是交换了两个值从 Onedark 的源代码中提取出来

请注意,除了@Andrew 的回答(实际上是正式的 :help colorcolumn)之外,这些 “黑客”可能会导致如下显示错误:

enter image description here

太可怕了,我花了半天时间才搞清楚是什么配置导致了这一切。