2017-03-09 38 views
1

我知道如何使用nmapimap等查看所有键映射在vim,如何列出哪些行为被绑定到一个给定的密钥捆绑。但是有时我想快速查看一个给定插件的所有键绑定,有没有快速的方法来做到这一点?我不想列出所有的键绑定并逐页搜索。VIM:如何列出当前缓冲区中的所有键映射为一个指定的插件

非常感谢提前。

+1

':帮助pluginname' – romainl

+0

但默认配置可以根据文件类型,自定义等进行更改。 – shizhz

回答

3

这里是一个获得一个特定的插件的映射在一个单独的窗口中的命令:

:let pluginName=".vimrc" | let cmdMap="map" 
:redir => output | silent execute "verbose ".cmdMap | redir END | new | put=output | execute 'v/^.*\n.*'.escape(pluginName,'./').'/d' 
  1. 在第一行中,改变可变pluginName与任何脚本名和cmdMap与任何地图命令。 (输入

  2. 在第二行中,执行将解析输出该命令。(结果


您仍然可以映射这些命令或创建一个函数来得到用户的输入。

编辑:

为了扩大使用其他映射命令(如map!),这将是更可靠的使用寄存器名称:

:redir @z | silent execute "verbose ".cmdMap | redir END | new | put z | execute 'v/^.*\n.*'.escape(pluginName,'./').'/d' 
+1

您需要检查'map!'以及'map'不会返回插入模式映射和命令模式映射。 –

+1

使用新的vim,你可以使用'execute()'和':filter'来代替':redir'。例如'命令! -nargs = + map让map = call({pat,mode - > execute('filter'.pat。'verbose'。(mode =〜'^。$'?mode.'map':mode))},[ ] + ['nmap'])|新的| setlocal buftype = nofile bufhidden =擦除noswapfile |无声! exe'pu = map'|无声! keeppat v /./ d_ | 1 |无声! unlet map',执行:'Map unimpaired n' –

相关问题