2010-02-25 63 views
22

有沒有辦法在vim中縮進選擇的線,就像我們在文本編輯器中選擇一束線並按Tab(或Shift Tab)來縮進/取消所選行呢?我正在討論一般的縮進問題,並且與代碼縮進無關。在VIM中縮進一堆線

+1

我對此主題做了一個截屏視圖:http://vimcasts.org/episodes/indentation-commands/ – nelstrom 2010-02-25 09:03:44

+0

可能重複[在vi中快速縮進多行](http://stackoverflow.com/questions/235839/ indent-multiple-lines-quickly-in-vi) – user 2015-07-23 23:39:04

回答

16

使用視覺模式,因爲彼得建議。您還可以使用X >>其中X是您要縮進的行數。例如。 5 >>從當前行縮進五行並向下。

+2

由於Stack Overflow和編寫代碼示例,我最常做的事情之一是'> G',以便從當前位置縮進到文件末尾。我通常使用Ruby編寫,所以它實際上是'> G.',因爲Rubyists使用雙空格縮進,SO需要四個,但是YMMV。 – 2013-01-28 01:18:17

35

可以(經由 + V)選擇一組與視線模式的行,然後鍵入

>

和,到DEDENT語言,

<

您也可以添加數字參數。發現你沒有縮進足夠?點擊gv重新選擇您之前的選擇。

雖然在正常模式下輸入,嘗試CTRL + ŤCTRL + d縮進或DEDENT語言。

+0

它不應該是'超越'而不是'dedent'嗎? – 2010-02-25 07:50:31

+2

@Vinko應該是,但不是:)一個outdent是一個向後縮進;一個縮進是一個縮進。也許它應該是真正的無名之輩。 – Peter 2010-02-25 08:18:47

+3

您不需要重新選擇要縮進的行。只需使用點命令:> ...將縮進四次。 – 2010-02-28 08:24:14

3

正如其他答案建議,您可以使用>。或者,可以自動正確通過選擇組中的視覺模式行的縮進代碼(使用 + V),然後使用=,或使用==縮進當前行。

8

我使用下面的映射縮進/取消縮進:

vmap <TAB> >gv 
vmap <S-TAB> <gv 

使用TAB縮進和Shift-Tab爲視所選行取消縮進。

如果一個塊被選中Vim indents/unindents什麼是 該塊的開始是否正確。

+0

它的作品也適合我! @ MacVim – 2010-03-25 19:04:49