我从事的一个编程项目,其他人都使用 4 个 tabsize,因此我发现set tabstop=4
在我的项目中这样做最简单~/.vimrc
。但是,我不希望这影响我编辑的每个文件 - 只影响这个项目的文件 - 比如说某个目录(及其子目录)中的每个文件。
有没有办法可以根据文件的目录前缀轻松地有条件地设置变量?
答案1
本地/项目特定配置
如果可以集中配置特定命令/本地例外,您可以将此类自动命令放入~/.vimrc
:
:autocmd BufRead,BufNewFile /path/to/dir/* setlocal ts=4 sw=4
重要的是使用:setlocal
代替:set
,并且同样使用:map <buffer> ...
和:command! -buffer ...
。
另一方面,如果您希望将特定配置与项目一起存储(并且不想通过以下方式将其嵌入到所有文件中)模式行),您有以下两种选择:
具有内置功能的本地配置
如果你总是从项目根目录启动 Vim,则内置的
:set exrc
.vimrc
允许从当前目录读取文件。您可以将:set ts=4 sw=4
命令放在那里。
通过插件进行本地配置
否则,你需要插件的帮助;vim.org 上有几个;我推荐localrc 插件(尤其是我自己的增强功能),甚至允许本地特定文件类型的配置。
请注意,从文件系统读取配置有安全隐患;您可能需要:set secure
。
答案2
您可以使用 (so) 命令配置 vim 以读取更多命令source
。将其添加到您的~/.vimrc
- 它会搜索当前目录,如果未找到 .vimrc_proj 文件,则会在父目录中搜索 .vimrc_proj。
if filereadable(".vimrc_proj")
so .vimrc_proj
else
if filereadable("../.vimrc_proj")
so .vimrc_proj
endif
endif
然后在配置文件中添加任何自定义命令.vimrc_proj
以适合您的项目。
答案3
答案4
Vim 支持编辑器配置因此,您可以将.editorconfig
文件放入该目录中,如下所示:
# 4 space indentation for all .c files.
[*.c]
indent_style = tab
indent_size = 4
如果您将其提交到项目的版本控制中,那么每个人都可以共享它,并且它也可以与他们的编辑器一起使用。