禁用所有文件类型的自动更新

Dan*_*uis 4 vim ftplugin

filetype plugin为一些我添加的rails vim插件打开了,但是这样的副作用似乎是现在所有文件类型都启用了自动更新(例如,如果我#在下一行开始一行,或者Enter在插入模式下或者O等进入插入模式,也会得到a #).

我找到了禁用自动注释的指南formatoptions,并将以下内容添加到我的.vimrc中:

au FileType * setlocal formatoptions-=cro
Run Code Online (Sandbox Code Playgroud)

但是,我仍然遇到问题 - 除非我明确地:source .vimrc(或setlocal ...直接输入),否则它不会生效.我确定是这种情况,因为vim的ftplugins正在用自己的选项覆盖我的选项.

然后我找到了第二个指南,讨论在ftplugin脚本运行后使用after ftplugin脚本进行更改,但是他们的解决方案是为〜/ .vim/after/ftplugin中的每个文件类型创建一个符号链接到中心文件,并且这似乎对我来说很愚蠢.

有没有办法创建一个通用的ftplugin脚本,还是我错误地解决了这个问题?任何帮助,将不胜感激.

Cur*_*son 5

一个"后"插件怎么样?在~/.vim/after/plugin/被叫noAutoComments.vim(或其他)中创建一个文件并将autocmd放入其中?

编辑:

这有效吗?我只是在这里猜测,但我感觉文件autocmd中的~/.vimrc文件被其他文件删除(但在"之后"文件被获取之前).

我最终删除了我的~/.vim目录并用~/.vimrc以下3行替换了我:

filetype plugin on
syntax on
au FileType * setlocal formatoptions-=cro
Run Code Online (Sandbox Code Playgroud)

在我~/.vimrc和没有~/.vim/目录中只有这些行,autocmd似乎按预期工作(Vim 7.1).

对于我编辑的任何文件:

:verbose set formatoptions?
formatoptions=ql
      Last set from ~/.vimrc
Run Code Online (Sandbox Code Playgroud)

我还没有确定导致此问题的文件(插件).


Dan*_*uis 5

我做了一些更多的调查,看来我的autocmd.vimrc 文件中的位置决定了是否formatoptions会被 vim 的 ftplugins 覆盖。使用vim --noplugin禁用所有外部插件,我发现以下结果:

如果我的 vimrc 看起来像:

au FileType * setl fo-=cro
filetype plugin indent on
Run Code Online (Sandbox Code Playgroud)

的结果:verbose set fo?是:

formatoptions=croql
  Last set from /usr/share/vim/vim72/ftplugin/ruby.vim
Run Code Online (Sandbox Code Playgroud)

但是,如果我的 vimrc 中的行颠倒过来:

filetype plugin indent on
au FileType * setl fo-=cro
Run Code Online (Sandbox Code Playgroud)

的结果:verbose set fo?是:

formatoptions=ql
  Last set from ~/.vimrc
Run Code Online (Sandbox Code Playgroud)

...这是期望的结果。所以看来autocmd启用文件类型插件后需要指定。