VIM禁用插件的插入映射

时间:2012-11-22 15:03:04

标签: vim mapping

插件为我的插入映射添加了<leader>is的映射。我有一些想法,它可以是一个。但是我不想改变外国插件中的任何东西。所以我想禁用这个映射。我试过这个:

imap <leader>is  <nop>

我没有帮助。

你有什么建议?

顺便说一下,我想问一下如何在vimrc中禁用所有插件的插件映射?

2 个答案:

答案 0 :(得分:11)

要删除插入模式映射,请使用:iunmap命令:

:iunmap <Leader>is

我不知道是否可以进行“批量取消映射”,但至少可以列出所有活动的插入模式映射

:imap

或者更好,

:verbose imap

还会告诉您首先定义了映射的位置。


编辑:为了澄清,在加载插件后,需要完成取消映射。为此,请在~/.vim/after/plugin/中创建一个包含以下内容的文件(请参阅@ ZyX的回答):

" myafter.vim: will be executed after plugins have been loaded
iunmap <Leader>is

答案 1 :(得分:8)

如果插入vimrc中的命令在插件定义侵入式映射之前执行,这就是它无效的原因。为了使它有效,你应该让它在该插件之后运行,这通常是通过将其放入~/.vim/after/plugin/disable_mappings.vim(任何名称而不是disable_mappings工作)来实现的。第二是使用VimEnter事件:

augroup DisableMappings
    autocmd! VimEnter * :inoremap <leader>ic <Nop>
augroup END

。要禁用所有映射,请参阅:h 'paste':h 'pastetoggle',同时:h :imapclear(尽管后者将删除映射而不是临时禁用映射)。


当然,您也可以在我建议使用iunmap的位置使用inoremap … <Nop>。我是怎么忘记这个命令的?