检测一个键是否绑定到vim中的某个东西

我想知道是否有一种方法来确定一个密钥是否在vim中执行某些操作。 我知道我可以使用:map来查看用户定义的映射,但有内置的东西的东西吗?

例如,我总是将CTRLWclosures,因为我认为它没有被使用。 半年后,我发现有一些序列使用它,像CTRLW CTRLS分裂窗口,这是一个噩梦再培训自己。

如果你看看兰迪·莫里斯的build议答案,你会发现

 :help index 

会给你你想要的清单。

不是一个完整的答案,但是你可能想看看:help map-which-keys列出vimbuild议你在你的自定义地图中使用的键。

该帮助部分提供了如何判断特定键是否映射到动作的build议。

要检查默认映射:

 :help index 

对于由用户或插件完成的其他映射:

 :map :map! 

来自http://vim.wikia.com/wiki/Mapping_keys_in_Vim_- 教程 (Part_1) :

第一个命令显示在正常,可视和select和操作员挂起模式下工作的地图。 第二个命令显示在插入和命令行模式下工作的地图。

通常,上述命令的输出将跨越多页。 您可以使用以下一组命令将输出redirect到vim_maps.txt文件:

 :redir! > vim_maps.txt :map :map! :redir END 

使用“:地图!” 和“:map”用于手动设置键和“:help”char(-combination)'“,以找出哪些键已经被映射到vim开箱即用(/不在您的特定编译选项中)。 (稍微偏离主题,但仍然值得关注(我认为):使用“:scriptnames”来查看哪些文件已经按照哪个顺序来源。

最好的问候

我浏览:help index并列出了一些未使用的nmap键:

  • Q(切换到“Ex”模式)
  • Z除ZZ,ZQ
  • \
  • gb,gc,gl,gx,gy,gz
  • zp,zq,zu,zy
  • cd,cm,co,cp,cq,cr,cs,cu,cx,cy
  • dc,dm,do,dp,dq,dr,ds,du,dx,dy
  • gA,gB,gC,gG,gK,gL,gM,gO,gS,gX,gY,gZ
  • zB,zI,zJ,zK,zP,zQ,zP,zS,zT,zU,zV,zY,zZ
  • ]]]>]]>]]>]]>]]>]]>]]]>]]]]> ,] y
  • [,[,,] [,[,[,[,[,[,[,, ,[y
  • CTRL-G,CTRL-K
  • CTRL- \ a – z(保留为扩展名)
  • CTRL- \ A – Z(未使用)

请更新/评论。

你可以使用mapcheck

例如,我想映射<CR> ,igg=G缩进文件。 为了检查是否已经有一个映射<CR> , i

 if mapcheck("\<CR>", "I") == "" |echo "no mapping" 

…但是这不会检测映射是否是序列的一部分。