4

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

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

au FileType * setlocal formatoptions-=cro

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

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

有什么方法可以创建一个通用的后 ftplugin 脚本,还是我错误地处理了这个问题?任何帮助,将不胜感激。

4

6 回答 6

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

但是,我还没有确定是什么文件(插件)导致了这个问题。

于 2010-07-14T18:49:19.737 回答
4

我做了更多调查,似乎我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需要在启用文件类型插件后指定。

于 2010-07-15T15:11:41.767 回答
3

这可能不会生效的另一个原因......

来自:he :set-=

            When the option is a list of flags, {value} must be
            与选项中显示的完全相同。删除标志
            一一避免问题。

我有

    " 关闭自动评论
    au FileType * setlocal formatoptions-=c
    au FileType * setlocal formatoptions-=r
    au FileType * setlocal formatoptions-=o

因为我遇到了这个。

于 2011-12-09T14:17:07.503 回答
1

如果您找到正确的事件,则使用各种autocmd事件之一来设置配置选项应该可以工作,但我将从运行开始:

:verbose set formatoptions?

这将告诉您该选项的设置位置,这可能使您更容易确定要使用哪个 autocmd。或者,如果你不介意一点小黑客,我可能会这样做的方式只是找出它在插件中的设置并注释掉该行(并记下它以防你升级插件)。您还可以联系插件的作者并要求他们将其设为可配置选项。

对于可用的autocmd事件,请阅读:

:help {event}
于 2010-07-14T12:43:27.480 回答
1

我尝试了许多人提出的解决方案,但没有一个对我有用,但我找到了一个非常简单的解决方法,即在您的 ~/.bash_aliases 中:

    # vim without auto comment
    alias vi="vi +'set fo-=cro'"
于 2013-02-07T19:06:34.393 回答
1

我一直在努力解决这个问题,最后我使用了以下几行:

syntax on
filetype on
filetype plugin on
au FileType * setlocal formatoptions-=cro

我认为这里的关键 autocmdfiletype plugin on.

于 2013-08-07T12:44:32.223 回答