101

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

例如,我总是CTRL-W必须关闭选项卡,因为我认为它没有被使用。半年后,我发现有一些序列使用它,比如CTRL--分割窗口W CTRLS重新训练自己是一场噩梦。

4

6 回答 6

88

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

:help index 

会给你你想要的清单。

于 2010-03-20T18:06:00.520 回答
48

检查默认映射:

: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
于 2013-04-20T05:58:43.803 回答
36

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

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

于 2010-03-20T17:03:47.923 回答
19

使用:map!and:map手动设置键并:help 'char(-combination)'找出哪些键已经映射到 vim 开箱即用(/在您的特定编译选项之外)。(稍微偏离主题但仍然值得关注(我认为)::scriptnames用于查看哪些文件是按什么顺序获取的。)

于 2011-01-18T10:23:41.780 回答
19

我浏览: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(未使用)

请更新/评论。

于 2016-02-06T17:44:59.270 回答
14

您可以使用mapcheck.:-

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

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

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

于 2013-11-01T12:34:59.737 回答