Vim 为特定文件类型设置不同的格式选项

Vim 为特定文件类型设置不同的格式选项,vim,Vim,我试图在formatoptions中为除filetype vim之外的所有文件打开c标志。以下内容无法实现这一目标: autocmd BufRead,BufNew,BufEnter *.* set formatoptions+=c autocmd FileType vim setlocal formatoptions-=c 谁能告诉我我做错了什么?谢谢。您正在做的事情看起来是这样的: if foo == 1 do something elseif

我试图在formatoptions中为除filetype vim之外的所有文件打开
c
标志。以下内容无法实现这一目标:

autocmd BufRead,BufNew,BufEnter *.* set      formatoptions+=c
autocmd FileType vim                setlocal formatoptions-=c

谁能告诉我我做错了什么?谢谢。

您正在做的事情看起来是这样的:

if foo == 1
    do something
elseif bar == "baz"
    do something else
一种情况是由某件事引起的,另一种情况是由完全不同的事情引起的,因此……这些情况并不是相互排斥的

要么检查相同的内容,如
文件类型
,要么设置一个默认值,后跟一个本地值

set formatoptions+=c
autocmd FileType vim setlocal formatoptions-=c

这样,除了
vim

之外,每个文件类型都有
c
,您所做的事情如下所示:

if foo == 1
    do something
elseif bar == "baz"
    do something else
一种情况是由某件事引起的,另一种情况是由完全不同的事情引起的,因此……这些情况并不是相互排斥的

要么检查相同的内容,如
文件类型
,要么设置一个默认值,后跟一个本地值

set formatoptions+=c
autocmd FileType vim setlocal formatoptions-=c

这样,除了
vim

filetype
事件在设置“filetype”时被触发外,每个文件类型都有
c

当您进入该缓冲区时,
BufEnter*
将被触发,也就是说,它发生在
FileType
事件之后,并再次添加
c


您可以只在vimrc
中设置formatoptions+=c
并仅使用一个autocmd,如果是vim文件类型,则从选项中删除c。

文件类型
事件是在设置“文件类型”时触发的

当您进入该缓冲区时,
BufEnter*
将被触发,也就是说,它发生在
FileType
事件之后,并再次添加
c

您可以只在vimrc
中设置formatoptions+=c
并仅使用一个autocmd,如果是vim文件类型,则从选项中删除c