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

VoY*_*VoY 21 vim plugins indentation

我正在研究几个项目,每个项目使用不同的缩进样式(用于各种文件类型).例如,每个缩进级别1个选项卡,2个或4个空格等.如何在这些不同的样式之间自动切换?我通常喜欢使用制表符缩进,但我厌倦了在使用空格缩进代码时必须输入:set expandtabs.可能的解决方案包括根据文件路径或项目根目录中的某些配置加载一段vim配置.是否有一个插件可以优雅地为我解决这个问题?

Jan*_*dec 16

  1. 看看cinoptions选项和softtabstop选项(expandtab但是,你知道).
  2. 在'〜/ .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
    
    Run Code Online (Sandbox Code Playgroud)

    如果项目混合了语言并且需要不同的设置,那么您还可以添加以下扩展名:

    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
    
    Run Code Online (Sandbox Code Playgroud)


evn*_*vnu 14

我使用插件localvimrc,它正是你要求的:

有时,当您处理不同的项目时,您会遇到问题,即使用不同的缩进,制表符扩展等.每个项目都需要vimrc来覆盖〜/ .vimrc中的首选设置


Rob*_*ier 6

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
Run Code Online (Sandbox Code Playgroud)