Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Vim中显示80个字符后的不同背景颜色_Vim - Fatal编程技术网

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

在Vim中显示80个字符后的不同背景颜色,vim,Vim,我看到了,但答案只突出了超过80个字符的实际内容。我想有一个100+列的Vim窗口打开,最左边的80列使用普通背景,任何超过它的都使用稍微不同的背景。Vim窗口背景应该是不同的颜色,而不仅仅是超过80个字符点的文本。这将表明我离80字符点有多近,而不必先检查它 我不认为这是目前可能的,但我想我会问以防万一 也许可以用插件完成 TextMate所需Vim右边距高亮显示示例 通过在TextMate的常规首选项中选择“高亮显示右边距”,您可以看到所需Vim行为的示例 我认为不可能得到你想要的, 但我对

我看到了,但答案只突出了超过80个字符的实际内容。我想有一个100+列的Vim窗口打开,最左边的80列使用普通背景,任何超过它的都使用稍微不同的背景。Vim窗口背景应该是不同的颜色,而不仅仅是超过80个字符点的文本。这将表明我离80字符点有多近,而不必先检查它

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

也许可以用插件完成

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


我认为不可能得到你想要的, 但我对这个问题很感兴趣,所以我一直关注这个问题 我自己就是这样

也许,我说的是显而易见的,但你可以设置 第70+列中的高亮度以获得指示 您离第80栏的距离。

突出显示81栏

:set textwidth=80
:set colorcolumn=+1
您还可以制作一些样式:

:hi ColorColumn guibg=#2d2d2d ctermbg=246
尝试:


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

上述评论中提出的解决方案。首先高亮显示背景,然后高亮显示ColorColumn black作为覆盖。将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),",")

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

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

现在我想突出显示第80列、第120列及以后的内容,所以我有单独的“警告”和“危险”标记。你可以这样做:

let &colorcolumn="80,".join(range(120,999),",")
例子 下面是GVim编辑my
.vimrc
的屏幕截图


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

对于那些使用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的源代码中获取它,并且它也可以高亮显示多达256列,但不幸的是,它需要一个列列表来高亮显示,并且没有简写,因此您必须执行类似的操作:
:set colorcolumn=+1、+2、+3、+4、+5,+6
等等可能一直到
+256
,无论您希望右边距有多宽。然而,这只会突出显示缓冲区中的行,而不是窗口中的所有行。@Dyslexic Tangent:为什么不突出显示前80列呢?我没有想到这一点。将背景设置为要用于高亮显示>80列的颜色,将colorcolumn设置为1-80之间的所有列,并将colorcolumn的高亮组设置为您希望普通背景的颜色。一个问题,虽然我可以通过键入
:hi colorcolumn…
正确设置颜色,但当我将其放入.vimrc时,它似乎不起作用。你知道怎么做吗?我看到了与robbrit相同的问题-如果我在ex模式下运行highlight命令,它看起来不错,但是如果我在vimrc文件中有它,它会破坏我的colorscheme…colorcolumn被限制为256个定义,每个
:help colorcolumn
。。。此外,在使用join技术时,我的设置似乎被截断了一些长度,尽管我无法通过vim的源代码搜索出该长度。此外,vim每次进入窗口、初始化缓冲区等时都会将此设置的值解析为字符串,因此这是一种实现所需结果的昂贵方法。感谢您发布此内容,这正是我想要的!还有一个问题,有没有办法不将此规则设置为特定类型的文件(.md)?@daviddis当然!您可以执行类似于
autocmd FileType markdown let&colorcolumn=“”
的操作来完全取消设置它。如果可以避免,请更新指向@obfk的链接。这很简单,但也很出色。谢谢在紧要关头这么聪明。我喜欢它,因为它能适应主题的变化。谢谢
highlight ColorColumn ctermbg=235 guibg=#2c2d27
let &colorcolumn="80,".join(range(120,999),",")
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"}
  \ }