MacVim中的文件类型特定地图(带有vundle)

时间:2012-08-19 06:33:29

标签: r vim

我希望在编辑<D-1>文件时将<-映射到R

我最初编辑~/.vim/bundle/Vim-R-plugin/ftdetect/r.vim并添加了:

inoremap <D-1> <space><-<space>

然而,当我编辑所有类型的文件时,它可用 - 我测试了.py和我的.vimrc

为什么会这样?

为解决这个问题,我补充道:

autocmd FileType r inoremap <D-1> <space><-<space>

到我的.vimrc。现在,当我最初打开mvim时,地图不存在,但是一旦我打开*.r文件,我的所有其他文件都存在映射。

为了测试发生了什么,我补充道:

autocmd FileType python inoremap <D-1> <space>==<space>

并发现当我既没有加载任何类型的文件,也没有映射<D-1>;当我加载*.r文件时,<D-1><-个文件中以及所有其他文件中提供了*.r(根据需要)文件 - 当我下次打开*.py文件时,<D-1>所有文件中产生了== - 包括在*.r文件中。

试验,我发现我最近打开的任何文件类型都会定义映射。编辑多个文件类型时,这是不合需要的行为。

此问题的最佳实践解决方案是什么?

我使用MacVim并使用vundle管理我的捆绑包。

2 个答案:

答案 0 :(得分:2)

正如sylvain.joyeux在他的回答中提到的,你应该使用'ftplugin'目录来表示你的映射。但这不会解决映射问题。 <D-1>映射可用于所有缓冲区的原因是您为所有缓冲区(全局)定义它。如果要将映射限制为某个特定缓冲区,则应使用<buffer> :map命令的特殊参数。所以你的映射命令应如下所示:

inoremap <buffer> <D-1> <space><-<space>

有关详细信息,请参阅:help :map-<buffer>

答案 1 :(得分:0)

ftdetect目录用于保存注册文件自动检测命令的文件,即通常格式为

的文件
au BufNewFile,BufRead *.antlr setf antlr

ftplugin目录是您正在寻找的目录。但是,我不确定在这里添加r.vim是否会覆盖任何全局可用的R插件(如果有的话,我不确定)