2011-12-02 67 views
6

如果我已經聲明爲這樣的功能:移動到VIM結束括號

public static void main(String[] args){ 
    blahblahlbah; 
} 

反正有從「P」,在public移動的結束「}」功能?

可以假設方法體的長度相當長,並且確實包含大括號,如果這有所影響。

謝謝!

+0

所以結果是'ublic static ... {...} p'? – sidyll

+0

不,光標位於最後一行的「}」上 –

+0

哦,對不起。看起來我完全忽略了「來自」這個詞,並認爲你正在嘗試修改文本。我什至編輯你的問題!抱歉。 – sidyll

回答

5

試試這個關鍵次序:f{%應該這樣做。

+0

啊。兩個動作..猜猜應該是明顯的..謝謝! –

1

/{會帶你到左括號和%將跳轉到匹配關閉的一個。

4

有沒有幾種方法來完成運動。

最合適的動作指令是

]M 

這是短期和到點:這將光標移動到在Java類源代碼的下一 方法結束。

還有三個衛星運動與]M一起給 跳轉到下一個或上一個方法的開始和結束的可能性,參見:help ]m及以下。因此,除了]M,在這種情況下一個可以 問題

]m% 

答案的其餘部分包含了一些技巧,應該使用的討論 僅如果由於某種原因在上述運動命令未能 解決在你的情況下的問題。

另一種簡單的主意,趁就是跳過去的參數列表, 找到下一個大括號,並移動到其關閉對應,

%l% 

f{% 

甚至

/%輸入%

類似的想法,將光標移動到方法的身體 的開始,比跳轉到下一個無與倫比的右大括號導致以下 命令,

j]} 

注,儘管如此,最後四個命令中的三個僅在功能 標題爲單行時起作用。如果不是這樣,他們需要修改。

根據對代碼格式化的一些假設,也可以使用面向純文本的移動來實現相同的結果 。如果左大 括號是方法標題行的最後一個字符,可以使用

$% 

g_% 

如果支架是最後非空白字符

總之,堅持]M運動只要你的作品(它 應,在絕大多數情況下),再回頭向基於其他文本的運動指令 組合技巧,否則。

+0

''M'也很好,因爲它可以讓你將光標放在函數的第一行,並按'zf] M'來摺疊該函數。非常好!謝謝! –

+0

@ 3321thec:的確,它擁有動作命令的全部力量!與許多其他運動組合不同,此運動也適用於多線方法頭。這是Vim中用於Java類源代碼編輯的一個小內置gem,不是嗎? –

+0

對我來說] m和] M的表現方式是一樣的。都跳到開頭括號{而不是右大括號。有沒有我應該檢查的設置。 – kshenoy

1

][移到第一列中的下一個}。所以只要您的功能正確縮進,這將適用於您。

:help ][:help section

我用這個,同時通過一個文件搜索和我的光標被定位在一些長期函數中特定的搜索結果。通常,我會想知道我在哪個函數中,所以][%讓我進入函數簽名,然後n將我返回到我開始的搜索結果。