如何在Vim中实现项目特定的缩进?

| 我正在研究多个项目,每个项目使用不同的缩进样式(适用于各种文件类型)。例如,每个缩进级别有1个制表符,2或4个空格等。如何自动在这些不同样式之间进行切换?我通常更喜欢使用制表符缩进,但是当使用空格缩进的代码时,我总是不得不输入:set expandtabs,这让我感到厌倦。可能的解决方案将包括基于文件路径或项目根目录中的某些配置加载一些vim配置。是否有插件可以通过一种优雅的方式为我解决此问题?     
已邀请:
         查看
cinoptions
选项和
softtabstop
选项(以及
expandtab
,但您知道)。 在您的\'〜/ .vimrc \'中,为每个目录定义缓冲区条目自动命令,在其中保存某些项目的源,例如:
augroup ProjectSetup
au BufRead,BufEnter /path/to/project1/* set et sts=2 cindent cinoptions=...
au BufRead,BufEnter /path/to/project2/* set noet sts=4 cindent cinoptions=...
augroup END
如果项目使用多种语言,并且需要不同的设置,那么您也可以 添加扩展名,例如:
au BufRead,BufEnter /path/to/project1/*.{c,h} set noet sts=0 cindent cinoptions=...
au BufRead,BufEnter /path/to/project1/*.py set et sts=4
    
        我使用的插件localvimrc确实满足您的要求:   有时,当您处理不同的项目时,您会遇到问题,即它们使用不同的缩进,选项卡扩展等。每个项目都需要vimrc,以覆盖〜/ .vimrc中的首选设置     
        EditorConfig及其Vim插件:   什么是EditorConfig?      EditorConfig帮助开发人员定义和维护一致的编码   不同的编辑器和IDE之间的样式。 EditorConfig项目   由用于定义编码样式的文件格式和一个集合组成   文本编辑器插件,使编辑器可以读取文件格式并   坚持定义的样式。 EditorConfig文件易于阅读并且   它们与版本控制系统配合良好。 除其他事项外,它允许您设置缩进,该缩进仅适用于该项目。这是非常简单且最重要的标准化方法,受到许多不同的编辑器和IDE-s的支持,因此它不仅为您而且为所有从事项目的人员设置了合适的缩进。 您只需要在项目根目录中创建一个
.editorconfig
文件,Vim会自动找到它(假设您已安装插件),并设置适当的值。为每个项目创建
.editorconfig
文件即可满足您的需要-项目特定的缩进。 配置文件示例:
root = true

[*]
charset = utf-8
end_of_line = lf
indent_style = space
indent_size = 4
insert_final_newline = true
trim_trailing_whitespace = true

[*.{js,html}]
indent_size = 2

[*.css]
indent_size = 4
    
        是的,有:如果您使用的是Project Plugin,则可以指定一个文件,每次打开该项目的文件时,其内容都将被评估(该文件称为
in.vim
)。
in.vim
的对面是
out.vim
:每次离开项目时都会执行此命令。     

要回复问题请先登录注册