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

Dou*_*oug 129 vim

我已经看到了Vim 80列布局问题,但那里的答案只突出了超过80个字符标记的实际内容.我希望打开一个100+列Vim窗口,最左边的80列使用正常背景和任何过去使用略有不同背景的东西.Vim窗口背景应该是不同的颜色,而不仅仅是超过80个字符点的文本.这表明我有多接近80-char点,而不必先完成它.

我认为目前不可能,但我想我会问以防万一.

也许它可以用插件完成?

TextMate所需Vim右边距突出显示示例

通过在TextMate的常规首选项中选择"突出显示右边距",您可以看到所需Vim行为的示例.

TextMate右边距突出示例

Jus*_*rce 216

如果你有Vim> = v7.3,你可以简单地将它添加到你.vimrc的突出显示81及以后(所以80是你的最后一个有效列):

let &colorcolumn=join(range(81,999),",")
Run Code Online (Sandbox Code Playgroud)

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

highlight ColorColumn ctermbg=235 guibg=#2c2d27
Run Code Online (Sandbox Code Playgroud)

现在我想强调第80列以及第120列以及之后,所以我有单独的"警告"和"危险"标记.你可以这样做:

let &colorcolumn="80,".join(range(120,999),",")
Run Code Online (Sandbox Code Playgroud)

这是GVim编辑我的截图.vimrc.

GVim编辑我的.vimrc

我使用Ubuntu Mono 11字体和molokai配色方案.你可以在GitHub上找到我的vim配置和所有的dotfiles.

  • 你的dotfiles很热. (15认同)
  • colorcolumn限制为256个定义,每个`:help colorcolumn` ...此外,我的设置似乎在使用你的连接技术时被截断了一些长度,虽然我不能匆匆搜索vim的源来弄清楚是什么那长度是.此外,vim每次进入窗口,初始化缓冲区等时都会将此设置的值解析为字符串,因此这是实现所需结果的一种昂贵方式. (3认同)
  • 也适用于终端vim,很棒的提示 (3认同)

And*_*rew 74

突出显示81列

:set textwidth=80
:set colorcolumn=+1
Run Code Online (Sandbox Code Playgroud)

你也可以做一些造型:

:hi ColorColumn guibg=#2d2d2d ctermbg=246
Run Code Online (Sandbox Code Playgroud)

  • 这个,它也可以突出显示多达256列,但不幸的是它需要列出一列列表,并且没有简写,所以你可以这样做`:set colorcolumn = + 1,+ 2 ,+ 3,+ 4,+ 5,+ 6`等可能一直到'+ 256`,无论你认为你喜欢你的右边距.但是,这只会突出显示缓冲区中的行,而不是窗口中的所有行. (2认同)
  • @Dyslexic Tangent:为什么不突出显示前 80 列呢? (2认同)
  • 一个问题,虽然我可以通过键入`:hi colorcolumn ...来正确设置颜色,但是当我把它放在我的.vimrc中时它似乎不起作用.你知道怎么做吗? (2认同)

Con*_*ner 16

以上评论中提出的解决方案 首先突出显示背景,然后将ColorColumn黑色突出显示为叠加层.将颜色列设置为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),",")
Run Code Online (Sandbox Code Playgroud)


GoT*_*imw 8

尝试:

:/\%>80v./+
Run Code Online (Sandbox Code Playgroud)

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


Ren*_*ger 0

我认为不可能拥有你想要的东西,但我关注这个问题,因为我自己对这样的事情感兴趣。

也许,我说的是显而易见的事情,但您可以在第 70 列以上设置高亮显示,以指示您距离第 80 列有多近。