我打开了filetype plugin
我添加的一些rails vim插件,但这样的副作用似乎是现在所有文件类型都启用了自动更新(例如,如果我用{{1开始一行)下一行,在插入模式下通过 Enter 或 O 等进入插入模式,也会获得#
)。
我找到guide来禁用自动评论#
,并将以下内容添加到我的.vimrc中:
formatoptions
但是,我仍遇到问题 - 除非我明确au FileType * setlocal formatoptions-=cro
,(或直接输入:source .vimrc
),否则它不会生效。我确定是这种情况,因为vim的ftplugins正在用自己的选项覆盖我的选择。
然后我找到了一个second guide,它讨论了在ftplugin脚本运行后使用after ftplugin脚本进行更改,但是他们的解决方案是为〜/ .vim / after / ftplugin中的每个文件类型创建符号链接到中央文件,这似乎对我来说很蹩脚。
有没有办法创建一个通用的ftplugin脚本,还是我错误地解决了这个问题?任何帮助将不胜感激。
答案 0 :(得分:5)
“后”插件怎么样?在~/.vim/after/plugin/
中创建一个名为noAutoComments.vim
(或其他)的文件,并将您的autocmd放入其中?
编辑:
这个有用吗?我只是在这里猜测,但我感觉autocmd
文件中的~/.vimrc
被其他文件删除(但在“之后”文件获取之前)。
我最终删除了我的~/.vim
目录,并将~/.vimrc
替换为以下3行:
filetype plugin on
syntax on
au FileType * setlocal formatoptions-=cro
我的~/.vimrc
和~/.vim/
目录中只有这些行,autocmd
似乎按预期工作(Vim 7.1)。
对于我编辑的任何文件:
:verbose set formatoptions?
formatoptions=ql
Last set from ~/.vimrc
我还没有确定导致此问题的文件(插件)。
答案 1 :(得分:3)
我已经做了一些调查,似乎我的autocmd
在我的.vimrc文件中的位置决定了formatoptions
是否会被vim的ftplugins覆盖。使用vim --noplugin
禁用所有外部插件,我发现了以下结果:
如果我的vimrc看起来像:
au FileType * setl fo-=cro
filetype plugin indent on
:verbose set fo?
的结果是:
formatoptions=croql
Last set from /usr/share/vim/vim72/ftplugin/ruby.vim
但是,如果我的vimrc中的行相反:
filetype plugin indent on
au FileType * setl fo-=cro
:verbose set fo?
的结果是:
formatoptions=ql
Last set from ~/.vimrc
...这是理想的结果。因此,似乎需要在启用文件类型插件后指定autocmd
。
答案 2 :(得分:3)
这可能不会生效的另一个原因......
来自:he :set-=
:
When the option is a list of flags, {value} must be exactly as they appear in the option. Remove flags one by one to avoid problems.
我有
" Turn off auto-commenting au FileType * setlocal formatoptions-=c au FileType * setlocal formatoptions-=r au FileType * setlocal formatoptions-=o
因为我遇到了这个问题。
答案 3 :(得分:1)
如果找到正确的事件,使用其中一个autocmd
事件设置配置选项应该有效,但我首先要运行:
:verbose set formatoptions?
这将告诉您选项的设置位置,这可以更容易地确定要使用的autocmd。或者,如果你不介意一些轻微的黑客行为,我可能会这样做就是找出它在插件中设置的位置并注释掉那一行(并记下它以防你升级插件)。您也可以联系该插件的作者,并要求他们将其作为可配置选项。
对于可用的autocmd
事件,请阅读:
:help {event}
答案 4 :(得分:1)
我已经尝试过很多人提出的解决方案,但是没有一个能为我工作,但我发现了一个非常简单的解决方法,就是在〜/ .bash_aliases中:
# vim without auto comment
alias vi="vi +'set fo-=cro'"
答案 5 :(得分:1)
我正在努力解决这个问题,我最终使用以下几行:
syntax on
filetype on
filetype plugin on
au FileType * setlocal formatoptions-=cro
我认为这里的关键是autocmd
位于filetype plugin on
之后。