10

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

imap <leader>is  <nop>

我没有帮忙。

你有什么建议?

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

4

2 回答 2

14

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

:iunmap <Leader>is

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

:imap

或者,更好的是,使用

:verbose imap

这还将告诉您首先在哪里定义了映射。


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

" myafter.vim: will be executed after plugins have been loaded
iunmap <Leader>is
于 2012-11-22T15:25:19.173 回答
8

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

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

. 要禁用所有映射,请参见and :h 'paste'(尽管后者将删除映射而不是暂时禁用它们)。:h 'pastetoggle':h :imapclear


当然,你也可以iunmap在我建议使用的地方使用inoremap … <Nop>. 我怎么会忘记这个命令?

于 2012-11-22T15:23:21.760 回答