设置方法
在 .vimrc
文件(没有就在 $HOME
下新建一个)中设置[1]:
1 | filetype plugin indent on |
另一个回答附有有更通俗的注释[2]:
1 | filetype plugin indent on |
filetype 命令说明
1 | filetype plugin indent on |
这行命令主要是用于开启文件类型检测
作用
vim通过对文件类型的识别,可以为不同类型的文件,设置不同的选项值、定义不同键绑定等。例如,对于c类型的文件,它就和bash脚本有不同的注释格式、不同的缩进格式、不同的关键字等。vim在设置文件类型后,会触发FileType事件,执行FileType相关的自动命令,对不同类型的文件区别对待。[5]
commands 命令具体说明
以下列出了设置时需要使用的命令的说明:tabstop, shiftwidth, expandtab, 和 softtabstop
tabstop
Set tabstop to tell vim how many columns a tab counts for.[6]
tabstop 设置 vim 中每个 tab 展开的列数
softtabstop
Set softtabstop to control how many columns vim uses when you hit Tab in insert mode.[6:1]
顾名思义,softtabstop
是 tabstop
的 soft 版本
expandtab
When expandtab is set, hitting Tab in insert mode will produce the appropriate number of spaces.[6:2]
对 expandtab 进行设置后,点击 tab 就会将其转换为对应数量的空格
shiftwidth
Set shiftwidth to control how many columns text is indented with the reindent operations (<< and >>) and automatic C-style indentation.[6:3]
综合
设置情况 | Vim 行为 |
---|---|
softtabstop < tabstop ;expandtab 没有设置 |
混合使用 tab 和 space 来生成期望的 spacing |
softtabstop = tabstop ;expandtab 没有设置 |
总是使用 tab |
设置了 expandtab |
总是使用 空格 |
可以看到,我们应该设置 expandtab
,以让 Vim 自动将 tab 转换成对应的空格