我想知道是否有办法确定一个键是否在 vim 中执行某些操作。我知道我可以用它:map
来查看用户定义的映射,但是有什么内置的东西吗?
例如,我总是CTRL-W必须关闭选项卡,因为我认为它没有被使用。半年后,我发现有一些序列使用它,比如CTRL--分割窗口W CTRL,S重新训练自己是一场噩梦。
我想知道是否有办法确定一个键是否在 vim 中执行某些操作。我知道我可以用它:map
来查看用户定义的映射,但是有什么内置的东西吗?
例如,我总是CTRL-W必须关闭选项卡,因为我认为它没有被使用。半年后,我发现有一些序列使用它,比如CTRL--分割窗口W CTRL,S重新训练自己是一场噩梦。
如果您查看 Randy Morris 的建议答案,您会发现
:help index
会给你你想要的清单。
检查默认映射:
: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
不是一个完整的答案,但您可能需要查看:help map-which-keys
vim 建议您在自定义映射中使用的键列表。
该帮助部分提供了有关如何判断特定键是否映射到操作的建议。
使用:map!
and:map
手动设置键并:help 'char(-combination)'
找出哪些键已经映射到 vim 开箱即用(/在您的特定编译选项之外)。(稍微偏离主题但仍然值得关注(我认为)::scriptnames
用于查看哪些文件是按什么顺序获取的。)
我浏览:help index
并列出了一些未使用的nmap
键:
<Space>
(与普通模式相同l
;普通模式下最大和最不充分利用的键)请更新/评论。
您可以使用mapcheck
.:-
例如,我想映射<CR> ,i
到gg=G
缩进的文件。检查是否已经有映射<CR> , i
if mapcheck("\<CR>", "I") == "" |echo "no mapping"
...但这不会检测映射是否是序列的一部分。