liux's blog

1433223

  1. 1. shiftwidth
  2. 2. tabstop
  3. 3. softtabstop
  4. 4. 综上
  5. 5. 参考

shiftwidth

开启自动缩进或智能缩进后,可以通过设置shiftwidth来指定自动缩进的单位长度:

set shiftwidth=4

在多人编辑代码时,为了保证代码的风格统一,代码规范可能要求代码中不能出现制表符,在vim中可以通过设置expandtab来将行首的tab缩进自动转换为空格保存:

set expandtab

tabstop

tabstop(简写:ts)可以用来修改制表符在vim中的显示宽度,默认值是8,即一个制表符显示出来是8个空格的宽度。在一些网上的教程中将该值修改为4可以使得行首的缩进显示为4个字符长度:

set tabstop=4

这样修改后的确可以使得vim在缩进方面的的显示效果比默认设置更好,但是在文档的其他部分和打印出的文档中可能会出现显示问题,因为一个完整的制表符显示为8个字符长度是许多地方公认的设置。因此,一般情况下不建议修改tabstop的值,而是通过softtabstop来达到相同的目的。

softtabstop

可以通过设置 softtabstop(简写:sts) 的值来指定一个tab代表的缩进长度:

set softtabstop=4

当softtabstop的设置值与tabstop不同时,vim在编辑与显示文件时对制表符的处理会让用户“感觉”和修改ts的效果是一样的,包括按一下tab键和按一下backspace键的效果。而实际上,vim使用的是制表符与空格的混合格式,即如果空格长度不足一个ts,使用的就是空格,如果空格长度大于ts,则每逢ts个空格就将之替换为一个制表符。 注:x之类的命令仍然在实际字符之上操作。

综上

~/.vimrc中有关缩进与缩进长度方面的选项可以如下设置:

set autoindent
set smartindent
set softtabstop=4 “ Whatever you want
set shiftwidth=4 “ Whatever you want
set expandtab

如果在修改设置前有一个已经存在了tab键缩进的文档,可以使用如下命令将tab键修改为空格:

:set expandtab
:retab 4
:set ts=8

另:设置了自动缩进也可能会导致在借(复)鉴(制)大段代码时出现缩进异常的问题,可以通过进入paste模式借(复)鉴(制)解决。

参考

:help ins-expandtab
:help tabstop
:help softtabstop
:help shiftwidth
:help paste

本文最后更新于 天前,文中所描述的信息可能已发生改变