如何知道快捷方式执行了哪个Vim命令?
How to know which Vim command is executed by a shortcut?
如何知道默认 Vim 快捷方式执行的是哪个命令?
我见过类似的问题,其中接受的答案仅适用于自定义(用户或插件定义的快捷方式)。
例如,我想将(向下滚动半页)执行的操作映射到另一个快捷方式,因为我不知道要调用哪个命令。我无法将其映射到 <c-d>
,因为我正在将该快捷方式用于另一个命令 (:q
)。
您可以创建自定义映射,例如 nnoremap <leader>a ggVG
<leader>a
被映射到命令序列:gg V G
我猜你的意思 "default shortcut" 就像上面例子中的 gg or V or G
一样。那些 "shortcuts" 确实调用了一些 function/programs,但我们不知道这些函数,因为它们是内置的东西,如果你想知道它们,你必须阅读 vim 的源代码代码。
对于您的问题,为 scroll half page down
创建映射,您可以尝试
nnoremap {yourKeysHere} <c-d>
:h ctrl-d
了解详情,<c-d>
将向下滚动半屏。换句话说,您只需创建到那些 "default shortcuts" 的映射,然后就可以了。
如果这不能回答您的问题,请给出具体要求,您想要达到的目标。
要查看默认映射可以查看 :help index
。
正如您提到的自定义映射,您可以使用 :map X
、:imap X
等
我找不到默认快捷方式的命令,但我发现了一种实现我想要的方法:
" My custom map, use noremap to prevent <c-u> from using overridden definition
nnoremap <Space> <c-d>
map <c-d> :q <cr>
默认 "shortcuts" 不是 "shortcuts":它们是低级 命令。 您不需要知道它们映射到什么命令因为它们没有映射到 任何东西。
如果您想在映射中使用 d
提供的功能,只需使用 d
:
nnoremap <key> <something>d<somethingelse>
关于您的以下评论之一:Ex 命令都是 line-wise 因为 Ex 是 line-wise 的,所以将它们视为普通模式命令的命令行版本,一般字符。
已经有几个很好的答案,但我认为您大多忽略了 :map
和 :noremap
之间的区别。对于后者(和推荐的!),不考虑现有映射。
因此,如果您有到 <C-d>
的映射,但仍想在其他地方使用 "scroll down by half page",只需使用 :nnoremap ... <C-d>
.
正如其他人所说,没有内置功能,默认的 <C-d>
键 是 功能。在函数中(相对于使用 :noremap
的映射),您还可以使用 :normal!
来触发它::execute "normal! \<C-d>"
.
如何知道默认 Vim 快捷方式执行的是哪个命令?
我见过类似的问题,其中接受的答案仅适用于自定义(用户或插件定义的快捷方式)。
例如,我想将(向下滚动半页)执行的操作映射到另一个快捷方式,因为我不知道要调用哪个命令。我无法将其映射到 <c-d>
,因为我正在将该快捷方式用于另一个命令 (:q
)。
您可以创建自定义映射,例如 nnoremap <leader>a ggVG
<leader>a
被映射到命令序列:gg V G
我猜你的意思 "default shortcut" 就像上面例子中的 gg or V or G
一样。那些 "shortcuts" 确实调用了一些 function/programs,但我们不知道这些函数,因为它们是内置的东西,如果你想知道它们,你必须阅读 vim 的源代码代码。
对于您的问题,为 scroll half page down
创建映射,您可以尝试
nnoremap {yourKeysHere} <c-d>
:h ctrl-d
了解详情,<c-d>
将向下滚动半屏。换句话说,您只需创建到那些 "default shortcuts" 的映射,然后就可以了。
如果这不能回答您的问题,请给出具体要求,您想要达到的目标。
要查看默认映射可以查看 :help index
。
正如您提到的自定义映射,您可以使用 :map X
、:imap X
等
我找不到默认快捷方式的命令,但我发现了一种实现我想要的方法:
" My custom map, use noremap to prevent <c-u> from using overridden definition
nnoremap <Space> <c-d>
map <c-d> :q <cr>
默认 "shortcuts" 不是 "shortcuts":它们是低级 命令。 您不需要知道它们映射到什么命令因为它们没有映射到 任何东西。
如果您想在映射中使用 d
提供的功能,只需使用 d
:
nnoremap <key> <something>d<somethingelse>
关于您的以下评论之一:Ex 命令都是 line-wise 因为 Ex 是 line-wise 的,所以将它们视为普通模式命令的命令行版本,一般字符。
已经有几个很好的答案,但我认为您大多忽略了 :map
和 :noremap
之间的区别。对于后者(和推荐的!),不考虑现有映射。
因此,如果您有到 <C-d>
的映射,但仍想在其他地方使用 "scroll down by half page",只需使用 :nnoremap ... <C-d>
.
正如其他人所说,没有内置功能,默认的 <C-d>
键 是 功能。在函数中(相对于使用 :noremap
的映射),您还可以使用 :normal!
来触发它::execute "normal! \<C-d>"
.