2013-05-30 66 views
1

我在Vim中使用AutoClose插件。我想設置的行爲,這樣,當我在狀態在C中創建新塊時縮進新行

while(i < N) {<cursor>} 

那麼當(且僅當)我按回車鍵,我得到:

while(i < N) { 
    <cursor> 
} 

這是崇高的行爲文本。

還有一個類似的問題在這裏:Automatically insert a matching brace in Vim但用戶正在尋找一開始大括號創建一個新行。此外,它似乎並沒有爲我工作正確。

如果我使用的,還是通過set cindent作爲@WoLpH建議的結果是(當我創建左括號)

while(i < N) { 
    <cursor> 
    } 

如在第二支撐縮進並且光標由縮進一個空間。我的vimrc設置爲:

filetype indent on 
set ts=4 
set sw=4 
set et 

回答

0

我編輯的自動關閉腳本。功能OpenSpecial現在包含:

return "\<esc>a\<CR>\<tab>;\<CR>".a:cchar."\<esc>\"_xk$\"_xa" 

所以我得到我想要的行爲通過鍵入{{ L,不夠好,現在

0

有一個內置的功能爲,這就是所謂的cindent

http://vim.wikia.com/wiki/Indenting_source_code#.27smartindent.27_and_.27cindent.27

所以,只要把這個在您的.vimrc,它應該工作:

set cindent 
+0

不太我後 - 我會更新與怎麼辦的問題有 – YXD

+0

似乎當我添加'set sts = 4'時更好地工作。 – YXD

+0

@MrE:是的,您還需要其他一些標誌以使其正常工作。在我的情況下'''鍵入後會自動縮進。 – Wolph

0

你是被包含在DelimitMate,類似於自動關閉另一個插件後的功能。

對於它的價值,我已經使用任何autoclosing插件幾個月前停止了,但我一直認爲「托架擴展」功能,以這條線在我~/.vimrc

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