我正在进行一个项目,目前编码标准是使用2个空格缩进。但是,在其他项目中,我使用了4个空格缩进。
有没有一种简单的方法告诉vim某个目录中的所有文件都应该有2个空格的tabstop?
答案 0 :(得分:14)
使用与目录匹配的autocmd
并设置您需要的任何选项:
au BufRead,BufNewFile,BufEnter /path/to/dir/* setlocal ts=2 sts=2 sw=2
这也适用于子目录中的文件。
正如Ingo Karkat所指出的,此类命令应该使用setlocal
而不是set
,以便特定于缓冲区。
答案 1 :(得分:4)
古老的Tim Pope刚刚发布了一个插件调用Sleuth,它根据当前文件中使用的内容自动确定shiftwidth和tabstop(以及其他缓冲区选项)(或者,令人难以置信的是,如果它是一个新的缓冲区,基于在附近的文件上。)
答案 2 :(得分:1)
如果您不担心这些项目目录例外的中央配置,Nikita Kouevda的:autocmd
解决方案简单有效。另一方面,如果您希望将特定配置与项目一起存储(并且不希望通过模型将其嵌入到所有文件中),则可以使用以下两个选项:
如果你总是从项目根目录启动Vim,那就是内置的
:set exrc
允许从当前目录中读取.vimrc
文件。您可以在其中放置:set ts=2 sw=2 et
命令。
否则,您需要插件的帮助; vim.org上有几个;我可以推荐localrc plugin。
答案 3 :(得分:1)
前段时间我完全根据这些需求编写了插件:Vimprj。这是一个用于管理不同项目选项的插件。
有一个人甚至写过关于它的nice article。
很快:您需要在项目的根目录(或.vimprj
目录中创建一些.vimprj
文件)创建.vim
文件,并且每次切换到此项目时,此文件或者目录.vimprj
将被采购。
阅读插件页面了解详情,如果您对此插件有任何问题,请随时问我。
答案 4 :(得分:0)
embear / vim-localvimrc https://github.com/embear/vim-localvimrc运作良好。
我创建了一个.lvimrc
文件,其中包含:
setlocal noexpandtab
setlocal shiftwidth=8
setlocal tabstop=8
并且对于包含autocmd FileType
的子目录中的每个文件,它优于.vimrc
的{{1}}默认配置。
插件会在父目录中找到每.lvimrc
个来源,首先是根目录,因此.lvimrc
越深越优先。
EditorConfig https://github.com/editorconfig/editorconfig-vim是一个很好的选择,如果您控制源树,每个人都必须使用的设置,因为它包含编辑器不可知的设置(以及Vim实现)。