如何在vim中避免累积文件类型命令?

时间:2012-12-21 02:39:20

标签: vim file-type vim-plugin ftplugin

假设我在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

1 个答案:

答案 0 :(得分:3)

问题是,'colorcolumn':match(您没有指定是使用新设置还是旧的突出显示方法)窗口的本地,但ftplugins只应设置缓冲区本地设置。

为什么这些设置是窗口本地的?这允许您在两个窗口中显示相同的缓冲区,一个用于,另一个没有突出显示。

你能做些什么来阻止这种情况?

a)不要在ftplugin中设置它,而是使用映射来打开/关闭颜色列。

b)将:setlocal nocolorcolumn放入所有正在使用的文件类型的ftplugin脚本中(例如在~/.vim/after/ftplugin/*.vim中)。除非您在同一窗口中切换不同的文件类型,否则这只会起作用。

c)解决此问题的正确(但最复杂)方法是:autocmdBufWinEnterBufWinLeave事件中的WinLeave个{/ 1}}。