2012-01-11 44 views
5

我已經添加了一些簡單的inoremap命令到我的.vimrc來幫助完成parens和括號,但我只希望它們適用於php文件。Vim inoremap特定文件類型

inoremap (()<Esc>i 
inoremap { {<CR>}<Esc>ko 
inoremap <? <?php ?><Esc><Left>i 

如何將這些命令設置爲僅在編輯.php文件時處於活動狀態?

+0

[vim:想讓它只爲某些文件類型打開設置]的可能重複(http://stackoverflow.com/questions/469564/vim-would-like-it-to-turn-settings-on - 僅限於某些文件類型) – gpojd 2012-01-11 21:08:29

回答

7

使用autocmd FileType

autocmd FileType php,c,java inoremap (()<Esc>i 
0

有可能是一個更好的方式來做到這一點,但這應該工作:

autocmd FileType php call Inoremaps() 
fu! Inoremaps() 
    inoremap ... 
endfu 
5

把它們放在一個文件

~/.vim/ftplugin/php.vim 
12

你需要做2件事:

  • 通過對inoremap使用<buffer>選項創建映射到特定緩衝區的本地映射。
  • 僅加載特定文件類型的映射。

這可以通過一個自動在您的.vimrc來完成,像這樣:

autocmd FileType php inoremap <buffer> (()<Esc>i 

另一種方式的選擇是通過創建一個插件。 (見:h ftplugin有詳細介紹)

一個簡單的例子是做創建一個名爲,~/.vim/after/ftplugin/php.vim文件,並放在裏面,像這樣的映射:

inoremap <buffer> (()<Esc>i 
inoremap <buffer> { {<CR>}<Esc>ko 
inoremap <buffer> <? <?php ?><Esc><Left>i 

我個人更傾向於本插件的方法,但具有在一切你的.vimrc文件可以很好。

+0

好極了,五分之一的作者只知道''。 – ZyX 2012-01-12 15:33:15

+0

有趣的是,選項似乎給了我一個E488尾隨字符錯誤 – CamelBlues 2012-01-12 16:09:48

+0

@CamelBlues:你能告訴我那個休息的命令嗎?通常當你有不必要的':'例如E488錯誤時'autocmd FileType php:inoremap (() i' – 2012-01-12 17:22:25

1

將它們添加到文件類型插件文件的目錄後:

~/.vim/after/ftplugin/php.vim 

更多信息在this answer

編輯:此文件,甚至可能是目錄,默認情況下不會在那裏。如果你在那裏看不到它,你可能必須做出來。