標籤:

VIM學習筆記 縮進 (Indent)

VIM學習筆記 縮進 (Indent)

來自專欄 VIM學習筆記

手動縮進

在Normal Mode下,命令>>將對當前行增加縮進,而命令<<則將對當前行減少縮進。我們可以在命令前使用數字,來指定命令作用的範圍。例如以下命令,將減少5行的縮進:

5<<

如果代碼沒有正確排版,那麼我們可以使用==命令來縮進當前行;也可以進入可視化模式並選擇多行,然後使用=命令縮進選中的行。

通過與文本對象組合,使用以下命令可以縮進{}括弧內的代碼。

=a{

如果需要縮進整個文件內的代碼,則可以使用以下命令:

gg=G

在Insert/Replace Mode下,Ctrl-Shift-t可以增加當前行的縮進,而Ctrl-Shift-d則可以減少當前行的縮進。使用0-Ctrl-Shift-d命令,將移除所有縮進。需要注意的是,當我們輸入命令中的「0」時,Vim會認為我們要在文本中插入一個0,並在屏幕上顯示輸入的「0」;然後當我們執行命令0-Ctrl-Shift-d時,Vim就會意識到我們要做的是減少縮進,這時0會就會從屏幕上消失。

縮進寬度默認為8個空格。我們可以使用以下命令,來修改縮進寬度:

:set shiftwidth_=4

通過以下設置,每次點擊Tab鍵,將增加寬度為8列的Tab縮進。

:set tabstop=8:set softtabstop=8:set shiftwidth_=8:set noexpandtab

使用以下設置,每次點擊Tab鍵,增加的縮進將被轉化為4個空格。

:set tabstop=4:set softtabstop=4:set shiftwidth_=4:set expandtab

其中,expandtab選項,用來控制是否將Tab轉換為空格。但是這個選項並不會改變已經存在的文本,如果需要應用此設置將所有Tab轉換為空格,需要執行以下命令:

:retab!

自動縮進

在Vim中還可以進行自動縮進,主要有cindent、smartindent和autoindent三種模式。

autoindent 在這種縮進形式中,新增加的行和前一行使用相同的縮進形式。可以使用以下命令,啟用autoindent縮進形式。也可以點擊==鍵進行縮進。

:set autoindent

smartindent 在這種縮進模式中,每一行都和前一行有相同的縮進量,同時這種縮進形式能正確的識別出花括弧,當遇到右花括弧(}),則取消縮進形式。此外還增加了識別C語言關鍵字的功能。如果一行是以#開頭的,那麼這種格式將會被特殊對待而不採用縮進格式。可以使用以下命令,啟用smartindent縮進結構:

:set smartindent

cindent Vim可以很好的識別出C和Java等結構化程序設計語言,並且能用C語言的縮進格式來處理程序的縮進結構。可以使用以下命令,啟用cindent縮進結構:

:set cindent

推薦閱讀:

VIM學習筆記 多編碼處理 (Multi-Encodings)
Vim 新人學習路線, 小技巧
你為了真正做到使用vim提高效率,花了多長時間學習和練習?
VIM常用操作命令梳理

TAG:Vim |