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!