Vim 缩进总结
在linux上编辑文件时,有时候从别的地方copy过来的代码要缩进,如果一行一行的搞,忒麻烦耗时了,下面是自己使用中不同模式下的一些缩进快捷方法:
一、 normal 模式下
>> 按2次> 当前行增加缩进
<< 按2次< 当前行减少缩进
或者
:10,100>
第10行至第100行缩进
:20,80<
第20行至第80行反缩进
二、 Visual 模式下
normal 模式下按v 即进入VISUAL模式,可选择多行
选择好需要缩进的行后,按一次大于号’>’缩进一次,按’6>’缩进六次,按’<’回缩
三、INSERT 模式下
CTRL+SHIFT+T:当前行增加缩进
CTRL+SHIFT+D:当前行减少缩进
四、 缩进相关的参数
默认vim的缩进宽度为8个空格
与缩进相关的参数有shiftwidth、tabstop、softtabstop、expandtab。
shiftwidth reindent 操作(<<和>>)时缩进的列数(这里的一列相当于一个空格)
tabstop 一个tab键所占的列数,linux 内核代码建议每个tab占用8列
softtabstop 敲入tab键时实际占有的列数。
expandtab 输入tab时自动将其转化为空格
softtabstop大于tabstop时,且没有设置expandtab时, 例如:softtabstop=12,tabstop=8,
那么当输入一个tab时(softtabstop:实际占用的是12列),最后会变成一个tab(tabstop)加4个空格(8+4),
输入两个tab(2个softtabstop:24列)会变成3个tab(tabstop),也就是说vim或用tabstop+空格来表示,最终你能看到的缩进的列数一定是softtabstop*按的tab键次数。(ps::set
list 可以查看tab符号)
softtabstop小于tabstop且没有设置expandtab时,如果softtabstop=4,tabstop=8,输入一个tab(softtabstop),会变成4个空格(因为不够用一个tabstop表示),输入两个tab会变成一个tab(8列)。 如果softtabstop等于tabstop,而且expandtab没有设置,softtabstop与tabstop就没什么区别了。
如果设置的expandtab,输入一个tab,将被展开成softtabstop值个空格,如果softtabstop=4,那么一个tab就会被替换成4个空格。
设置expandtab:
:set expandtab
取消expandtab:
:set noexpandtab
自动缩进
:set autoindent 回车后自动缩进
通常Java的配置方式是:
:set softtabstop=4 shiftwidth=4 expandtab
Linux kernel的配置方式:
:set tabstop=8 softtabstop=8 shiftwidth=8 noexpandtab查看参数值:
:set $arg(这里的arg是变量,值就是上面的那些参数),比如:set softtabstop