2012-01-11 45 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

编辑:此文件,甚至可能是目录,默认情况下不会在那里。如果你在那里看不到它,你可能必须做出来。