gpt4 book ai didi

emacs - 如何在 Emacs viper-mode 中重新映射前缀键 'c' 、 'd' 等

转载 作者:行者123 更新时间:2023-12-01 02:58:10 25 4
gpt4 key购买 nike

我正在使用 Colemak 键盘布局,并想尝试 here 中的 Vim 布局与 Vimpulse。但是,布局重新映射命令前缀 Vim 键 'c' 和 'd' 等,这些键似乎不容易用标准 Viper 键重新映射命令重新映射。它们都映射到 viper 键盘映射中的“viper-command-argument”,实际的键功能似乎在 Viper 源的其他地方定义。

有没有比复制我的 Viper 源的本地副本并在其中重新定义魔术前缀键值更简单的方法来将前缀命令重新绑定(bind)到其他键?

最佳答案

Viper 模式命令前缀键是通过两组间接设置的。您找到了第一个,因为所有命令键都绑定(bind)到 'viper-command-argument .接下来要做的是查找变量viper-exec-array。 .目前设置如下:

(aset viper-exec-array ?c 'viper-exec-change)
(aset viper-exec-array ?C 'viper-exec-Change)
(aset viper-exec-array ?d 'viper-exec-delete)
(aset viper-exec-array ?D 'viper-exec-Delete)
(aset viper-exec-array ?y 'viper-exec-yank)
(aset viper-exec-array ?Y 'viper-exec-Yank)
(aset viper-exec-array ?r 'viper-exec-dummy)
(aset viper-exec-array ?! 'viper-exec-bang)
(aset viper-exec-array ?< 'viper-exec-shift)
(aset viper-exec-array ?> 'viper-exec-shift)
(aset viper-exec-array ?= 'viper-exec-equals)

所以,如果你想让键 t 像删除命令一样,你需要以下两件事:
(aset viper-exec-array ?t 'viper-exec-delete)
(define-key viper-vi-basic-map "t" 'viper-command-argument)

(并且大概你会将运动从 t 重新绑定(bind)到某个地方,比如 c 键:
(define-key viper-vi-basic-map "c" 'viper-goto-char-forward)

最后,您必须修改例程 'viper-prefix-arg-com ,我不假装完全理解。话虽如此,如果您替换所有 ?c?t ,然后 t 绑定(bind)按预期工作。 (或者,您可以添加 ?t,就像使用 ?c 一样 - 也可以)。我会提供源代码,但它有 100 行长,而且不值得在这里包括(这是一个 4 个字符的变化)。你可以通过 M-x find-function viper-prefix-arg-com 找到源代码。

长话短说,如果您想对 viper 的 key 进行大规模重新绑定(bind),这将是一项相当大的工作,您将更加熟悉 viper 源代码。

望路 'viper-prefix-arg-com已编码,您无法在不重新定义的情况下进行更改。 viper-mode 实现的可能还有 3 或 4 种其他不同类型的 vi 命令(这个是“命令参数”)。其他人希望更直接地重新绑定(bind)......

关于emacs - 如何在 Emacs viper-mode 中重新映射前缀键 'c' 、 'd' 等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2145562/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com