一、Vim缩进介绍

在没有设置Vim自动缩进的条件下,可以手动使用Vim命令对特定行进行缩进处理。在Vim插入模式下,按下 Tab 键时默认会输入一个制表符,可通过Vim配置项将 Tab 替换为空格,以便支持文件移植和多操作系统打开。

1.1 Vim缩进方法

在Vim普通模式下,​​>>​​​ 会对当前行增加缩进,​​<<​​ 则将对当前行减少缩进。

在命令前可使用数字来指定命令作用的范围。例如 ​​10>>​​ 将对包括光标所在行的连续10行增加缩进,而执行Vim缩进操作 ( <<>> )时缩进的列数,可使用 shiftwidth 选项;

1
2


"To change the number of space characters inserted for indentation"
set shiftwidth=4


上述配置指定了在vim普通模式下,使用 ​​<<​​​ 和 ​​>>​​ 进行缩进时缩进的列数为4个空格。

1.2 Vim插入模式下Tab键缩进设置

如果希望在Vim插入模式下按下 Tab 键时,输入到Vim中的都是空格,可通过设置 expandtab 选项实现:

1
2


"set expandtab option to insert space characters whenever the tab key is pressed "
set expandtab


在Vim设置了 expandtab 后,如果在某些情况下需要输入真正的 Tab ,可以使用组合按键 ​​Ctrl-V<Tab>​

1.3 使用空格替代Tab键

如果需要设置按下 Tab 键时输入的空格个数,可以使用 tabstop 选项,以下Vim设置使用4个空格替代 Tab 键

1
2


"insert 4 spaces for a tab"
set tabstop=4


Vim设置了 expandtab 选项后所有新输入的 Tab 键都会被替换为对应个数的空格,如果需要修改设置 expandtab 之前已经存在的所有 Tab 键,可以在Vim命令行模式使用命令 ​​:retab​​。

二、Vim自动缩进

Vim自带的自动缩进类型包括cindent、autoindent和smartindent三种。

cindent采用C语言的标准缩进方式来处理Vim文件的缩进结构,使用以下Vim配置可启动cindent缩进类型。

1


set cindent


Vim autoindent缩进模式下,新增加的行和前一行具有相同的缩进形式,可以使用以下配置启用autoindent缩进形式。

1


set autoindent


在Vim smartindent缩进模式下,每一行都有相同的缩进量,直到遇到右大括号 (}) 取消缩进形式。

如果某一行以 # 开头,那么该行不会采用上述缩进格式规则。可以认为smartindent是autoindent的升级版缩进方法。

以下设置可以启用vim的smartindent缩进方式:

1


set smartindent


:上述配置项可以直接在Vim命令模式下执行并立即生效。

[No000018F]Vim自动缩进配置、原理和tab键替换空格-Vim使用技巧(4)_vim命令