Vim格式选项-=或

Vim格式选项-=或,vim,Vim,我的vimrc中有以下行: " Don't add the comment prefix when I hit enter or o/O on a comment line. set formatoptions-=or 它曾经在某个时候起作用。我不知道我做了什么,但现在不知道了,我在创建新行时仍然会收到评论。什么能使它失效?这是我的vimrc:如果您的'formatoptions'包含顺序不同的选项,如ro,那么-=或将无法工作。试一试 set formatoptions-=o set for

我的vimrc中有以下行:

" Don't add the comment prefix when I hit enter or o/O on a comment line.
set formatoptions-=or

它曾经在某个时候起作用。我不知道我做了什么,但现在不知道了,我在创建新行时仍然会收到评论。什么能使它失效?这是我的vimrc:

如果您的
'formatoptions'
包含顺序不同的选项,如
ro
,那么
-=或
将无法工作。试一试

set formatoptions-=o
set formatoptions-=r
帮助中删除选项标志

请注意,您应该一次添加或删除一个标志。如果“guioptions”的值为“ab”,则使用“set guioptions-=ba”将不起作用,因为字符串“ba”不会出现


我通过
:set formatoptions?
意识到,尽管启动时禁用了
o
标志,但在打开文件时它会返回。我的vimrc中有一个修复了它:

" Don't add the comment prefix when I hit enter or o/O on a comment line.
autocmd FileType * setlocal formatoptions-=c formatoptions-=r formatoptions-=o

如果在启动后发现标志
o
被插入到
formatoptions
中,您应该找出原因并修复它。这似乎比总是执行
autocmd
更干净,即使在删除该选项之后也是如此

您可以使用以下命令检查选项的设置位置:

:5verbose set fo?
:5verbose setl fo?

编辑:

如果您的问题是Vim目录中的
ftplugin
文件(
$VIMRUNTIME/ftplugin
),您不应该更改该文件,因为当Vim更新时,该更改将被撤消。更改它的正确方法是在目录
之后的
中,如目录
之后的
:h中所述


假设问题发生在
c
filetype上,创建包含
setLocalFormatOptions-=
命令的文件
~/.vim/after/ftplugin/c.vim

@mm2703的解决方案对我不起作用,特别是对java文件,但这一更改确实起到了作用。我还将它包装在一个
augroup
语句中,这样resourcing
.vimrc
就不会重新注册
autocmd

augroup Format-Options
    autocmd!
    autocmd BufEnter * setlocal formatoptions-=c formatoptions-=r formatoptions-=o

    " This can be done as well instead of the previous line, for setting formatoptions as you choose:
    autocmd BufEnter * setlocal formatoptions=crqn2l1j
augroup END

谢谢,这对我很有效-但我正在禁用恼人的格式化功能

autocmd!

autocmd BufEnter*setlocal formatoptions-=c formatoptions-=q formatoptions-=n formatoptions-=r formatoptions-=o formatoptions-=l
也不是这样:(不过谢谢。这解决了我的问题。谢谢。注意,你也可以在一行中完成:
set formatoptions-=o formatoptions-=r
每次打开文件时都会添加它。我怎么知道是什么启用了它呢?我的vimrc中没有其他内容更改formatoptions.ohhhhhh。是的,我有。但我没有删除
autocmd
行。我刚做了,这次你的命令让我找到了罪魁祸首,那就是
ftplugin
。谢谢!除了你的
。例如,在ftplugins上,vimrc
——之外,配置还可以在许多其他地方更改。如果你禁用基于
autocmds
的修复程序,并输入一个缓冲区,其中显示
:set formatoptions?
发出上述命令的
o
选项应显示类似“Last set from”的内容编辑:事实上,我在~/.vim/ftplugin文件夹中有一个
vimOutliner
文件,所以我做的第一件事就是卸载它。但问题仍然存在,因为问题确实来自
$VIMRUNTIME/ftplugin
。因为问题几乎发生在我正在编辑的每个代码文件中de>autocmd
毕竟是最好的选择?您怎么看?如果您更改
$VIMRUNTIME/ftplugin
,您的更改将丢失,如果Vim更新和/或更改到另一台机器,即使您复制
.Vim
.vimrc
。我在编辑中提出的解决方案更好,因为它避免了这些问题,并且n用于以推荐的方式(参见目录后的
:h)对每种文件类型进行进一步定制,并与之相关:在Vim SEUgh,这终于成功了。我想我在到达这里之前尝试了4个答案。谢谢。