2016-01-05 50 views
0

我想要這樣的vim縮進行爲。Vim對於.php的奇怪縮進

public function foo() 
{ 
    _ <= cursor position 
} 

但是,就成了這樣...

public function foo() 
{ 
    _ 
    } 

我的.vimrc是

filetype plugin indent on 

set expandtab 
set tabstop=4 
set softtabstop=0 
set shiftwidth=4 
set autoindent 
set smartindent 

autocmd FileType php setlocal sw=4 sts=4 ts=4 et 
au BufRead,BufNewFile,BufReadPre *.php setl ft=php 

inoremap {<Enter> {}<Left><CR><ESC><S-o> 
inoremap [<Enter> []<Left><CR><ESC><S-o> 
inoremap (<Enter>()<Left><CR><ESC><S-o> 

而且整體here

關於這可能是什麼的任何想法?

+0

我投票作爲題外話,因爲它屬於在位於[這裏](HTTP Vim的SE網站,關閉了這個問題://vi.stackexchange。 COM /)。 – Script47

+1

@ Script47:但是關於Vim的哪個問題不是偏題(這是一個真誠的問題,我已經在想)? - >這個問題涉及設置'.vimrc',它是用[VimL](http://stackoverflow.com/tags/viml/info)腳本語言編寫的。那麼爲什麼它應該是無關緊要的? – yolenoyer

+1

你可能想在你的vimrc裏面'filetype plugin indent on'。如果自filetype indent腳本應該處理它,可能不需要'autoindent'和'smartindent'。 (這也意味着你不需要'setl ft = php' autocmd)。 – FDinoff

回答

0

它的行爲是這樣的,因爲如果你用<Left><CR>剪切行,vim將不考慮行的末尾(在你的情況下爲"}")考慮縮進。

試試這個映射來代替:

inoremap {<Enter> {<cr>}<esc>O 
+0

非常感謝您的幫助!我試過了,但沒有奏效......我得到了同樣的結果。 –