2013-04-01 38 views
1

這真的很容易打字開一個後插入一個右括號:如何在vim中啓動代碼塊後自動插入大括號?

inoremap { {<CR>}<Esc>ko 

這樣

if (true) {

轉換爲

if (true) { 
    | 
} 

但我想救時間和類型1字符少:

if (true)<CR>

所以我想創建以下規則:如果按下返回並符合IF /爲/時,執行{<CR>}<Esc>ko

開始這是可行的?

感謝您以前的映射

回答

4

大廈,這應該做你想做的:

inoremap)<CR>) {<CR>}<Esc>ko 

但是,你應該嘗試的一個片段擴展插件像SnipMate或Ultisnips。這兩種插件都允許您使用佔位符和鏡像(其中大部分是默認包含的)來定義片段,這些片段在觸發後按<Tab>時會被展開。

例如,你有一個擴展到觸發if相關的一個片段:

if ([condition]) { 

} 

condition選擇,供您輸入,而且一旦你完成,你可以再次打<Tab>到跳過大括號之間的光標,準備輸入:

if (myVar == 5) { 
    | 
} 

這非常方便。

+1

+1正確的路要走。如果你映射)或'',甚至''''你必須檢查('expr')是否跟隨'if,switch,for .....',否則你的便捷映射有時會很麻煩。我也推薦snipmate。 – Kent

+0

像這樣的映射是「愚蠢的」,它們可能在表面上工作......直到你找到一個棘手的角落案例。如果你想要一個可靠的解決方案,腳本很快變得必要。 – romainl

相關問題