1

我希望在编辑文件 时映射<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 管理我的包。

4

2 回答 2

2

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

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

详情请参阅:help :map-<buffer>

于 2012-08-19T07:16:32.763 回答
0

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

au BufNewFile,BufRead *.antlr setf antlr

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

于 2012-08-19T06:47:57.350 回答