本地/项目特定配置

本地/项目特定配置

我从事的一个编程项目,其他人都使用 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

您可以使用 Vim 的插件通过尝试检测缩进来以更通用的方式解决问题。

我选择的插件是检测缩进。我花了一些时间测试了插件的所有分支,才找到一个适合我需求的。最初的版本非常接近,但还不够,所以我做了我的自己的叉子

:set verbose=1对于调试来说,再次运行插件非常有帮助:DetectIndent

答案4

Vim 支持编辑器配置因此,您可以将.editorconfig文件放入该目录中,如下所示:

# 4 space indentation for all .c files.
[*.c]
indent_style = tab
indent_size = 4

如果您将其提交到项目的版本控制中,那么每个人都可以共享它,并且它也可以与他们的编辑器一起使用。

相关内容