2013-05-18 29 views
2

當我在與cindent或VIM-的javascript VIM以下接通:VIM IDENT:不刪除選項卡縮進時關閉}

if(bla){ 
    # 

(#表示光標)

我鍵入一個新行:

if(bla){ 

    # 

然後關閉}

if(bla){ 

} 

問題是,現在我回到了以前的線和

if(bla){ 
# 
} 

#後,有沒有更多的縮進!現在你可能會認爲這並不煩人,但是當我使用多級縮進標籤的文件工作時,由於我編碼的方式,它會破壞我的工作效率。有沒有什麼辦法可以關閉}在行之前不要銷燬tab縮進?

回答

2

的標籤不會被刪除,因爲你關閉了{},它刪除了,因爲你沒有進入該行的任何文本。

我有以下映射的許多變體在我~/.vimrc「修理」這個問題了幾年(如等待一個清晰的解決方案):

inoremap {<CR> {<CR>}<C-o>==<C-o>O 
inoremap {; {<CR>};<C-o>==<C-o>O 

都做同樣的事情:他們關閉{}並將光標放在它所屬的位置。有一堆自動關閉插件提供了這個功能,但我發現它們從長遠來看過於煩人。

+0

,如果我想保持的標籤,即使我進入一個行中沒有文字是什麼?這是我的另一個習慣.. – apscience

0

你在使用移動到空行?箭頭鍵(根據一些壞習慣)?也許你在寫完上面的東西之前不需要加上最後的大括號?你也可以只不能離開空白行,打右括號,然後鍵入<esc>O上面打開。或者,如果您因某種原因想要離開空白行,請使用S重置縮進。