autocommands
我在我的里面放了一堆文件类型依赖.vimrc
,其中一些是语法相关的。
我想把它们放在我的.vim/
树中的单独文件中,例如。一些 tex 语法会进入,.vim/syntax/tex.vim
但是当我这样做时,vim
不会再拾取它们。
我猜想文件没有自动读取(正如我最初预期的那样)。我应该怎么做?
答案1
您是否将自动命令作为自动命令放在这些单独的文件中?也就是说,您的文件中是否~/.vim/syntax/tex.vim
包含如下行:
au FileType tex set expandtab
或这个,
au BufRead,BufNewFile *.tex set expandtab
如果是这样,那就错了。当打开与插件名称对应的文件类型的文件时,Vim 会从 ftplugin、syntax 和 indent 目录中获取文件。如果插件包含自动命令,则将读取并执行这些自动命令,但命令部分直到下一个触发事件发生的时间。
如果您想要进行某些与文件类型相关的设置,请在该文件类型的 ftplugin 中放入类似这样的命令。
setlocal expandtab
不要将其放在自动命令中,而是使用setlocal
而不是仅仅set
这样设置将应用于包含该文件类型的缓冲区而不是应用于所有 Vim 缓冲区。
看
:help 43.1
:help 41.11
编辑
我忘了回答问题的另一部分。Vim 有三种文件类型相关的插件,它们位于 ~/.vim 的三个不同子目录中:ftplugin、syntax 和 indent。indent 子目录用于影响特定文件类型缩进的插件。syntax 子目录用于影响语法颜色的插件。ftplugin 用于影响行为设置(如文本宽度、映射、缩写等)的插件。