假设我在vim中加载了一个python文件。快速检查:scriptnames
表示我的~/.vim/ftplugin/python/python.vim
文件按预期加载。此文件中的一个命令突出显示超过第80列的所有字符。现在假设我在另一个缓冲区中打开一个C ++文件(因此运行~/.vim/ftplugin/cpp/cpp.vim
)。虽然执行了新命令,但python.vim
中的设置仍然适用;因此,在我的C ++文件中,字符突出显示在第80列之后。
有没有让filetype命令不像这样累积?我的filetype plugin indent on
已.vimrc
。
答案 0 :(得分:3)
问题是,'colorcolumn'
和:match
(您没有指定是使用新设置还是旧的突出显示方法)窗口的本地,但ftplugins只应设置缓冲区本地设置。
为什么这些设置是窗口本地的?这允许您在两个窗口中显示相同的缓冲区,一个用于,另一个没有突出显示。
你能做些什么来阻止这种情况?
a)不要在ftplugin中设置它,而是使用映射来打开/关闭颜色列。
b)将:setlocal nocolorcolumn
放入所有正在使用的文件类型的ftplugin脚本中(例如在~/.vim/after/ftplugin/*.vim
中)。除非您在同一窗口中切换不同的文件类型,否则这只会起作用。
c)解决此问题的正确(但最复杂)方法是:autocmd
,BufWinEnter
和BufWinLeave
事件中的WinLeave
个{/ 1}}。