Linux Vim,拆分窗口打断长度高亮显示

Linux Vim,拆分窗口打断长度高亮显示,linux,vim,Linux,Vim,我在我的.vimrc中设置了这个选项,以突出显示超过80个字符的行 highlight OverLength ctermbg=darkred ctermfg=darkred guibg=darkred match OverLength /\%>80v.\+/ 现在,如果我打开一个文件(一个缓冲区),其中的行太长,它们会高亮显示。很好,但是如果我打开另一个文件,然后使用NERDTree打开原始文件的vsplit,那么长线将不再高亮显示。我做错了什么 编辑:我正在GNU/Linux上使用gv

我在我的.vimrc中设置了这个选项,以突出显示超过80个字符的行

highlight OverLength ctermbg=darkred ctermfg=darkred guibg=darkred
match OverLength /\%>80v.\+/
现在,如果我打开一个文件(一个缓冲区),其中的行太长,它们会高亮显示。很好,但是如果我打开另一个文件,然后使用NERDTree打开原始文件的vsplit,那么长线将不再高亮显示。我做错了什么

编辑:我正在GNU/Linux上使用gvim


编辑:以拆分方式打开原始文件后,在重新启动vim并在单个缓冲区中打开文件之前,任何文件的长行都不会高亮显示。

命令
:match
仅适用于当前窗口。因此,任何
:split
都不会继承高亮显示。这记录在
:help:match
下:

您可以通过
:autocmd
为任何窗口自动安装匹配项:

autocmd VimEnter,WinEnter * match OverLength /\%>80v.\+/

但是我建议切换到Vim 7.3+中提供的
“colorcolumn”
设置;这只会突出显示一列(也可以用较短的行),但您可以在
~/.vimrc
中简单地设置colorcolumn=81,它适用于所有窗口,您可以将
:match
突出显示用于其他用途。

匹配是特定于窗口的。我不确定我是否误解了这里的意思,但只要不打开分割,就可以打开任何文件,高亮显示仍然有效。打开拆分,然后所有内容都会中断。这是因为拆分窗口上没有设置任何匹配项。匹配是特定于窗口的。如果他(像我一样)不想突出显示所有行,只想突出显示过长的行,他可以像这样使用
matchadd()
函数:
hi-OverLength-ctermbg=darkred-guibg=darkred
调用matchadd('OverLength','\%>80v.\+')@linluk:关于只突出显示长线的输入很好;我在回答中漏掉了这一点。不幸的是,
matchadd()
也是窗口本地的,所以它也需要
:autocmd
(但是保持
:match
免费使用)。你是对的,我只是在帮助中查找了它,
定义了一个在当前窗口中突出显示的模式(“匹配”)。
我很少使用windows,除了Gundo插件、Nerdtree。。。所以我没有想到这一点。但将其与
自动MD WinEnter
相结合应该可以完成这项工作。(可能考虑
matchdelete()
以避免重复添加匹配项)可能您可以将此添加到您的答案中:
augroup mymatches au!au WinEnter*call clearmatches()au WinEnter*call matchadd('超长','\%>80v.\+')A组结束
这个答案救了我一天。到处看看,像往常一样,回答医生的问题。
autocmd VimEnter,WinEnter * match OverLength /\%>80v.\+/