在vim中维护C文件的几种格式约定的最佳方法是什么?

时间:2014-08-13 14:01:04

标签: vim

例如https://www.ffmpeg.org/developer.html#Editor-configuration需要一组特定的规则,但对于我的项目,我通常更喜欢不同的规则。

为不同项目提供多个命名的格式化选项组并在不修改它们的情况下轻松切换它们会很棒.vimrc

1 个答案:

答案 0 :(得分:4)

Vim没有项目概念,因此它没有本地方式来做这样的事情。但是不要让那让你失望。我们仍然可以实现这样的目标。

设置exrc

set exrc

这使得能够读取当前目录中的.vimrc,.exrc和.gvimrc。但是,这意味着您必须使用正确的当前工作目录打开vim,并在同一vim实例中打开另一个项目将不会切换您的设置。有关详细信息,请参阅:h 'exrc'

滚动您自己的自动命令

Vim的自动命令基本上是事件处理程序。您可以处理从特定目录打开缓冲区等事件并运行命令,例如获取一些配置设置。

augroup ProjectSettings
  autocmd!
  autocmd BufRead /project1/* source ~/.vim/project1_settings.vim
  autocmd BufRead /project2/* source ~/.vim/project2_settings.vim
augroup END

只要您的设置文件使用缓冲区本地设置命令(如setlocal和映射/缩写与<buffer>选项),您的设置将仅应用于项目中的缓冲区。

我相信one (maybe?)Derek Wyatt个vim视频显示了类似的方法。

有关详细信息,请参阅以下内容:

:h :au
:h BufRead
:h :so
:h :setl
:h <buffer>

插件

有时候使用别人解决方案会更容易。有一些本地vimrc插件可以帮助您进行本地设置:

另一个不错的插件选项可能是使用Tim Pope的vim-sleuth,它根据文件启发式地更改缩进设置,或者在空白/新文件的情况下使用相同类型的其他文件。

如果项目导航在您的小巷中,那么我建议您查看Tim Pope的projectionist插件或一个不错的模糊查找器。

结论

这里有很多选择,没有真正正确的答案。我个人建议使用插件方法,因为它最简单。但是我觉得有义务告诉你我在工作中使用Projectionist和自定义项目插件,所以我有偏见。