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


134

我已经看到Vim 80列布局的问题,但是那里的答案仅突出显示超过80个字符标记的实际内容。我想打开一个100+列的Vim窗口,使用正常背景打开最左边的80列,然后使用稍微不同的背景打开任何窗口。Vim窗口背景应该是不同的颜色,而不仅仅是超过80个字符点的文本。这将表明我无需先超过80个字符就可以达到多近。

我认为目前尚不可能,但我想以防万一。

也许可以通过插件来完成?

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

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

TextMate右边距突出显示的示例


Answers:


223

如果您的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编辑我的.vimrc

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


3
每个:help colorcolumn... colorcolumn最多限制为256个定义。此外,使用连接技术时,我的设置似乎被截断了一定的长度,尽管无法协助我搜索vim的源以找出该长度是多少。而且,vim每次进入窗口,初始化缓冲区等时都会将该设置的值解析为字符串,因此这是一种获得所需结果的昂贵方法。
cptstubing06 2013年

15
您的点文件很热。
obfk

1
感谢您发布此帖子,这正是我想要的!还有一个问题,是否有一种方法可以不将此规则设置为特定类型的文件(.md)?
David Dias

1
@DavidDias当然!您可以执行一些操作autocmd FileType markdown let &colorcolumn=""来完全取消设置它。
贾斯汀部队

1
更新了指向vim config的
reergymerej 2016年

78

突出显示81列

:set textwidth=80
:set colorcolumn=+1

您还可以进行一些样式设置:

:hi ColorColumn guibg=#2d2d2d ctermbg=246

2
这样,也可以突出显示最多256列,但是不幸的是,它需要突出显示列的列表,并且没有简写形式,因此您可能需要进行诸如:set colorcolumn=+1,+2,+3,+4,+5,+6etcetera之类的操作,可能一直到任何+256宽度您认为您希望获得适当的利润。但是,这只会突出显示缓冲区中存在的行,而不是窗口中的所有行。
mkomitee,2011年

1
@Dyslexic Tangent:为什么不突出显示前80列?
brice 2012年

1
我没想到。将背景设置为要用于突出显示> 80列的颜色,并为1-80中的所有列设置colorcolumn,并将colorcolumn的突出显示组设置为您希望普通背景成为的颜色。
mkomitee,2012年

2
一个问题,虽然我可以通过键入正确设置颜色,:hi colorcolumn ...但是当我将其放入.vimrc时似乎不起作用。你知道怎么做吗?
robbrit 2012年

我看到了与robbrit相同的问题-如果我在ex模式下运行highlight命令,它看起来不错,但是如果我在vimrc文件中包含它,它就会破坏我的
配色

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),",")

1
这是简单而辉煌的。谢谢!
空袭

8

尝试:

:/\%>80v./+

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


如此聪明。我喜欢它,因为它适应主题变化。谢谢。
本杰明

0

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

也许,我是在说显而易见的话,但是您可以在第70+列中设置highligth,以表明您离第80列有多近。


0

对于那些像我一样使用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的源代码

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.