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

时间:2010-03-20 16:44:58

标签: vim key-bindings

我想知道是否有办法弄清楚密钥是否在vim中有用。我知道我可以使用:map来查看用户定义的映射,但内置的内容是否存在?

例如,我总是将 CTRL - W 绑定到关闭选项卡,因为我认为它未被使用。半年后,我发现有一些序列使用它,如 CTRL - W CTRL - S 拆开窗户,重新训练自己是一场噩梦。

6 个答案:

答案 0 :(得分:71)

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

:help index 

会为您提供所需的列表。

答案 1 :(得分:35)

检查默认映射:

:help index

对于由用户或插件执行的其他映射:

:map
:map!

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

  

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

     

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

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

答案 2 :(得分:30)

不是一个完整的答案,但您可能需要查看:help map-which-keys以获取vim建议您在自定义地图中使用的键列表。

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

答案 3 :(得分:16)

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

祝你好运, S上。

答案 4 :(得分:13)

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

  • Q(切换到“Ex”模式)
  • Z除了ZZ,ZQ
  • \
  • <Space>(与正常模式下的l相同;正常模式下最大且未充分利用的密钥)
  • gb,gc,gl,gx,gy,gz
  • gs(sleep)
  • 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(未使用)

请更新/评论。

答案 5 :(得分:9)

您可以使用mapcheck。: -

例如,我想将<CR> ,i映射到gg=G以缩进文件。 检查是否已存在<CR> , i

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

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