一些设置选项的含义
set expandtab
: 编辑时将tab展开为tabstop个空格。
shiftwidth
:使用自动缩进或>>
,<<
等命令时的缩进宽度。若无expandtab
,当连续缩进达到tabstop距离时,会替换为一个tab字符。
tabstop
:文件中的tab的显示宽度。
softtabstop
:编辑时按下expandtab
会混合tab与space进行缩进。
一些组合
1). tab字符显示4个space;缩进只使用4空格
set tabstop=4
set shiftwidth=4
set expandtab
2). tab字符显示8个space;缩进只使用4空格
set softtabstop=4
set shiftwidth=4
set expandtab
个人认为,维持tabstop和缩进空格数一致(即组合1)更好。大多数源代码文件都是space-only或者tab-only的,而使用tabstop=4
可以使用:retab
将源文件转换为4-space缩进的源文件。
3). 只用tab(4-space)
set tabstop=4
set shiftwidth=4
缩进模式之间的转换
由于只是简单的字符串处理,不涉及源码编译。所以以下方法不能完美的实现缩进转换。如果您有更好的方法,欢迎留言。
1). tab到空格
:%retab
将文件中的tab替换为tabstop个空格。可能会影响字符串中的tab(不是转义字符' ')
2). 空格到tab
:%retab!
与1)相反。同样可能会影响字符串。
3). 2-space到4-space
:%s/ /&&/g
可能会影响字符串中的内容。
4). 4-space到2-space
:%s/ / /g
可能会影响字符串中的内容。
5). 格式化
gg=G
将整个文件格式化,使用cindent
和lisp
。效果可能会比以上几种简单的字符串处理更好。