2

我正在尝试学习 emacs,获得 vi 自定义键绑定。

使用毒蛇模式,重新绑定密钥的正确方法是什么?(我使用Colemak 键盘布局(而不是 qwerty)所以必须改变 n->j 之类的东西)但希望它在 viper 模式下工作。

从 GNU.org 上的这个键绑定指南: 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)

它对我不起作用...实际上我什至不确定我是否具有“定义键”功能...

M-x define-key [No match]

我不确定我的 emacs 版本是否提供“define-key”?

这有效,但不适用于毒蛇模式

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

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

感谢您的帮助...

4

2 回答 2

4

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

首先,.viper为我准备好这条线。请注意,viper-vi-global-user-map当您处于命令模式时适用,而不是插入模式。

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

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

我猜你发现C-v当你处于插入模式时,它并没有像你想要的那样绑定。这可以通过将其添加到您的来解决.viper

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

最后,scroll-down可能不是你想要的。down指的是向下移动的文本(给定固定窗口的透视图) 。C-v一般是必然的'scroll-up。但是,也许这正是你想要的。

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

编辑添加

从您的评论看来,您希望与默认绑定n的内容相同。j尝试添加这个:

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

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

于 2010-10-28T17:01:57.543 回答
1

在现代,evil-mode 是 emacs 的 vim 仿真层,要为 colemak 调整它,我的https://github.com/wbolster/evil-colemak-basics包有很大帮助。

于 2016-10-20T14:47:30.950 回答