天天看點

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!