Vimscript - 是否可以重载映射?

Vimscript - Is it possible to overload mappings?

不重新映射,而是保持现有映射不变,但添加额外的功能。例如,重载 hjkl 键除了移动光标之外还会做一些额外的事情。

hjkl 不是映射;它们是 built-in 普通模式命令。

如果您想覆盖它们,您将需要创建自定义映射。例如,每次您按 j 时,此映射将使当前行居中(这几乎没有用,但可以作为示例):

nmap j jzz

请注意,j 现在已完全覆盖正常模式。现在使用原始 j 的唯一方法是删除该映射 definitively:

unmap j

或通过:normal命令暂时使用原来的j

:normal! j

或者,您可以创建一个完全独立的映射,例如:

nmap <Space>j jzz

并随时提供常规 j 和您自定义的 j(在本例中为 <Space>j)。尊重 built-in 行为,同时继续扩展它。