检测密钥是否绑定到vim中的某些内容


89

我想知道是否有办法弄清楚某个键是否在vim中起作用。我知道我可以:map用来查看用户定义的映射,但是内置的东西有东西吗?

例如,我一直必须CTRL-W一定要关闭标签,因为我认为它没有使用。半年后,我发现有一些使用它,就像序列CTRL- W CTRL-S分割窗口,它是重新训练自己的噩梦。


4
说到用户定义的映射的意外冲突,使用mapleader
derenio 2013年

Answers:


79

如果您查看Randy Morris的建议答案,您会发现

:help index 

将为您提供所需的列表。


很有用!很高兴知道有一个可以去看看的地方,如果您只是想四处学习新的东西
JonnyRaa 2015年

40

要检查默认映射:

:help index

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

:map
:map!

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

第一个命令显示以正常,可视,选择和操作员待定模式工作的地图。第二个命令显示在插入和命令行模式下工作的映射。

通常,以上命令的输出将跨越几页。您可以使用以下命令集将输出重定向到vim_maps.txt文件:

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

除非较新版本的Vim突然提供了更好的替代方法,否则这似乎是搜索包含和自定义键映射的唯一方法。mapcheck(如另一个答案中所述)也仅涵盖自定义按键绑定。输出到文本文件和mapcheck之间的主要区别在于,输出到文本文件和/或使用:help index可以让您/C-w在Vim中使用C-w
Zoe

34

这不是一个完整的答案,但是您可能需要查看:help map-which-keysvim建议您在自定义映射中使用的键列表。

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


19

使用:map!:map手动设置密钥,并:help 'char(-combination)'找出现成的vim中已经映射了哪些密钥(/特定的编译选项除外)。(略微偏离主题,但仍相当可观(我认为)::scriptnames用于查看哪些文件是以什么顺序来源的。)


如果要搜索哪些键会触发某个命令,可以执行以下操作::redir keys.txt:map:redir end然后打开keys.txt并搜索绑定的命令。
Christian Oudard 2012年

18

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

  • Q(切换到“ Ex”模式)
  • Z,ZZ,ZQ除外
  • \
  • <Space>(与l普通模式下相同;普通模式下最大和使用最多的密钥)
  • gb,gc,gl,gx,gy,gz
  • gs(睡眠)
  • 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
  • ] a,] b,] e,] g,] h,] j,] k,] l,] n,] o,] q,] r,] t,] u,] v,] w,] x ,] y
  • [a,[b,[e,[g,[h,[j,[k,[l,[n,[o,[q,[r,[t,[u,[v, ,[y
  • CTRL-G,CTRL-K
  • CTRL- \ a-z(保留扩展名)
  • CTRL- \ A-Z(未使用)

请更新/评论。


12

您可以使用mapcheck。:-

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

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

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


我尝试使用以下方法检查“ o”是否绑定到正常模式下的内容:if mapcheck(“ o”,“ N”)==“” | 回显“无映射”,但是当o确实绑定到“打开新行”时,它将报告“无映射”。我使用错了吗?
K. Norbert 2014年

@ K.Norbert:我相信这是针对用户定义的映射
Moha万能的骆驼
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.