天天看点

vim缩进

normal 模式下:

>>  当前行增加缩进
<<  当前行减少缩进
           

insert模式下:

CTRL+SHIFT+T:当前行增加缩进
CTRL+SHIFT+D:当前行减少缩进  
           

默认vim的缩进宽度为8个空格,修改缩进的宽度::set shiftwidth=4,具体什么意思,看下面的详细解释。

与缩进相关的参数有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 $arg(这里的arg是变量,值就是上面的那些参数),比如::set softtabstop

自动缩进

:set autoindent 回车后自动缩进

通常Java的配置方式是:

:set softtabstop=4 shiftwidth=4 expandtab

Linux kernel的配置方式:

:set tabstop=8 softtabstop=8 shiftwidth=8 noexpandtab

正常模式下缩进

下面10行缩进:

当前行缩进:

>>
           

tab键默认4空格

.vimrc中:

set ts=
set expandtab
set autoindent
%retab!