仅为特定目录树中的文件设置 vim 选项?

And*_*ier 19 vim vimrc

我参与了一个编程项目,其他人都使用 4 的 tabsize,所以我发现set tabstop=4在我的~/.vimrc. 但是,我不想让这影响我编辑的每个文件 - 只是这个项目的那些 - 假设某个目录(及其子目录)中的每个文件。

有没有办法可以轻松地根据文件的目录前缀有条件地设置变量?

Ing*_*kat 24

中央配置

如果可以集中配置本地异常,您可以将此类 autocmds 放入您的~/.vimrc

:autocmd BufRead,BufNewFile /path/to/dir/* setlocal ts=4 sw=4
Run Code Online (Sandbox Code Playgroud)

另一方面,如果您希望将特定配置与项目一起存储(并且不想通过modelines将其嵌入所有文件中),您有以下两个选项:

具有内置功能的本地配置

如果你总是从项目根目录启动 Vim,内置的

:set exrc
Run Code Online (Sandbox Code Playgroud)

允许.vimrc从当前目录读取文件。您可以将:set ts=4 sw=4命令放在那里。

通过插件本地配置

否则,您需要插件的帮助;vim.org 上有几个;我可以推荐localrc 插件,它甚至允许本地文件类型特定的配置。

请注意,从文件系统读取配置具有安全隐患;你可能想要:set secure