gpt4 book ai didi

Emacs define-key,Viper 模式键绑定(bind)

转载 作者:行者123 更新时间:2023-12-05 01:48:54 28 4
gpt4 key购买 nike

我正在尝试学习 emacs,获取 vi 自定义键绑定(bind)。

使用 Viper 模式,重新绑定(bind) key 的正确方法是什么? (我正在使用 Colemak keyboard layout(而不是 qwerty),所以必须更改 n->j 之类的东西)但希望它在 viper 模式下工作。

摘自 GNU.org 上的 key 绑定(bind)指南: http://www.gnu.org/software/emacs/manual/html_node/viper/Key-Bindings.html

它说放入 .viper 文件的命令是:

(define-key viper-vi-global-user-map "\C-v" 'scroll-down)

它对我不起作用...事实上我什至不确定我是否有“define-key”功能...

M-x define-key [No match]

我不确定 'define-key' 在我的 emacs 版本上是否可用?

这有效,但在 viper 模式下无效

(global-set-key "n" "j")

任何帮助将不胜感激。这是我第一天使用 Emacs,要让 Colemak 和 Viper 模式正常工作很痛苦。

感谢任何帮助...

最佳答案

希望这里有一些有用的答案:

首先,.viper 中的那一行对我有用。请注意,viper-vi-global-user-map 适用于命令 模式,而非插入模式。

其次,define-key 不是一个命令,它是一个常规函数,这只是意味着它不能使用M-x 调用。看这个Emacs wiki page有关该区别的更多详细信息。但这是一个很好的尝试。

第三,global-set-key 是一个命令,您可以尝试使用 M-x global-set-key 进行更改.但是,这会在 current global map 中设置 key ,这与 viper-vi-global-user-map 不同。 Viper 模式使用一组不同的键映射来使 Emacs 像 vi 一样运行,但所有映射都覆盖在全局映射之上。

我猜你发现 C-v 在你处于 insert 模式时没有像你想要的那样绑定(bind)。这可以通过将此添加到您的 .viper 来解决:

(define-key viper-insert-global-user-map "\C-v" 'scroll-down)

最后,scroll-down 可能不是您想要的。 down 指的是文本向下移动(给定固定窗口的视角)。 C-v 通常绑定(bind)到 的向上滚动。但是,也许这正是您想要的。

警告:我不是 viper 模式用户,我什至不知道如何使用 vi。所以我的术语可能不合适。但我发现在毒蛇模式下改变事物的挑战非常有趣。

编辑添加

从您的评论看来,您希望 nj 默认绑定(bind)的内容相同。尝试添加这个:

(define-key viper-vi-global-user-map "n" 'viper-next-line)

在“正常”模式下,我执行了 M-x describe-key j,它告诉我 j 绑定(bind)到 'viper-next-line,上面的行会将 n 绑定(bind)到相同的例程。对您要移动的其余绑定(bind)重复此操作。

关于Emacs define-key,Viper 模式键绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4044959/

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