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

K. *_*ert 82 vim key-bindings

我想知道是否有办法弄清楚一个键是否在vim中做了什么.我知道我可以:map用来查看用户定义的映射,但内置的东西有什么用吗?

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

ske*_*ept 73

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

:help index 
Run Code Online (Sandbox Code Playgroud)

会给你你想要的清单.


Hie*_*ieu 39

要检查默认映射:

:help index
Run Code Online (Sandbox Code Playgroud)

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

:map
:map!
Run Code Online (Sandbox Code Playgroud)

来自http://vim.wikia.com/wiki/Mapping_keys_in_Vim_- 教程(第1部分):

第一个命令显示在正常,可视和选择以及操作员暂挂模式下工作的映射.第二个命令显示在插入和命令行模式下工作的映射.

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

:redir! > vim_maps.txt
:map
:map!
:redir END
Run Code Online (Sandbox Code Playgroud)


Ran*_*ris 30

不是一个完整的答案,但您可能想要查看:help map-which-keysvim建议您在自定义地图中使用的密钥列表.

该帮助部分建议如何判断特定键是否映射到某个操作.


小智 17

使用":map!" 和":map"用于手动设置键和":help'char(-combination)'"以找出哪些键已经在vim中开箱即用(/在特定的编译选项之外).(稍微偏离主题但仍然可以考虑(我认为):使用":scriptnames"查看哪些文件来自哪个顺序.)

最好的问候,S.


Mic*_*zia 14

我浏览: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,[w,[x ,[y
  • CTRL-G,CTRL-K
  • CTRL-\a - z(保留用于扩展名)
  • CTRL-\A - Z(未使用)

请更新/评论.


Moh*_*mel 11

你可以使用mapcheck.: -

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

if mapcheck("\<CR>", "I") == "" |echo "no mapping"
Run Code Online (Sandbox Code Playgroud)

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