2010-09-29 92 views
7

surprisingnumberquestionsthissubject,但一些如何沒有人回答我想要的。如何在vim中專門縮進代碼塊?

我有一個代碼塊如下:

void foo { 

somecodehere 
morecode 
... 

} 

正如你可以看到我的功能的膽量都在同一水平上的我的代碼塊的其餘部分縮進。我目前所做的是>%在我的區塊末尾(即}),它會縮進整個區塊,包括帶有大括號的大括號。

我想要做的是一個類似的命令,其中每一行縮進,不包括我的花括號。

我無法開始告訴你,這會節省多少時間。

+1

使用'='進行格式設置(不縮進,但是對於我給出相同或更好的結果)。除非你不喜歡vim格式化你的代碼的方式。 'gg = G'會格式化整個文件。 – FrustratedWithFormsDesigner 2010-09-29 15:03:13

+0

@Frustrated不是我正在尋找的東西(有時我不想混亂內部格式),但也有助於知道。所以+1給你先生 – tzenes 2010-09-29 15:36:05

回答

11

而不是映射新的東西,>i{似乎做了你想要的,但它移動了光標。

+0

+1 - 甚至比我的答案還要短 – 2010-09-29 15:16:54

+0

我確定移動光標 – tzenes 2010-09-29 17:04:41

+0

光滑。這絕對是在我藏匿的Vim-ness中。 – alesplin 2010-09-30 19:46:36

1

插入

map sb v%><<%<< 

到您的.vimrc (你想要的任何組合鍵取代 'SB')。 它將整個功能轉移到右側,然後第一個和最後一個 行回到左側。它在一個塊的第一行或最後一行起作用

2

將光標置於要縮進塊內,並鍵入vi{>

v進入可視化模式。

i{選擇最內內一切{}塊

>縮進視覺塊,並返回到正常模式

然後可以使用''移動光標返回到其原始線。

N.B.如果您還想縮進大括號,請將i{替換爲a{

1

我使用的標記有時候可能是一種痛苦,但它起作用。
轉到你的函數的最後一行(上面的線})
ma創建標記「一」
返回到函數的頂部,並做到這一點。

> `一個

這只是說縮進一個級別,直至到達標記。