Emacs定义键,Viper模式键绑定

Emacs定义键,Viper模式键绑定,emacs,key-bindings,viper,viper-mode,colemak,Emacs,Key Bindings,Viper,Viper Mode,Colemak,我正在尝试学习emacs,获取vi自定义密钥绑定 使用Viper模式,重新绑定密钥的正确方法是什么?(我正在使用(而不是qwerty),因此必须更改n->j之类的内容),但希望它在viper模式下工作 从GNU.org上的本关键绑定指南: 它说要放入.viper文件的命令是: (define-key viper-vi-global-user-map "\C-v" 'scroll-down) 这对我不起作用。。。事实上,我甚至不确定我是否有“定义键”的功能 我不确定我的emacs版本上是否有“

我正在尝试学习emacs,获取vi自定义密钥绑定

使用Viper模式,重新绑定密钥的正确方法是什么?(我正在使用(而不是qwerty),因此必须更改n->j之类的内容),但希望它在viper模式下工作

从GNU.org上的本关键绑定指南:

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

(define-key viper-vi-global-user-map "\C-v" 'scroll-down)
这对我不起作用。。。事实上,我甚至不确定我是否有“定义键”的功能

我不确定我的emacs版本上是否有“定义键”

这是可行的,但不是在毒蛇模式下

(global-set-key "n" "j")
任何帮助都将不胜感激。这是我第一天使用Emacs,让Colemak&Viper模式正常工作是一件痛苦的事情


感谢您的帮助……

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

首先,在
.viper
中加入这一行对我来说很有用。请注意,当您处于命令模式而不是插入模式时,
viper vi全局用户映射
适用

其次,
define key
不是命令,它是一个常规函数,这意味着不能使用M-x调用它。关于这一区别的更多细节,请参见本文。但这是一次很好的尝试

第三,
global set key
是一个命令,您可以尝试使用M-x global set key进行更改。但是,这在中设置了键,这与viper vi全球用户地图不同。Viper模式使用一组不同的键映射使Emacs的行为类似于vi,但所有的映射都覆盖在全局映射之上

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

(define-key viper-insert-global-user-map "\C-v" 'scroll-down)
最后,
向下滚动
可能不是您想要的。
down
是指向下移动的文本(给定固定窗口的透视图)。C-v通常绑定到向上滚动的
。但是,也许这正是你想要的

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

编辑以添加

从您的评论中,听起来您希望n与默认情况下j的绑定相同。尝试添加以下内容:

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

在“正常”模式下,我做了M-x描述键j,它告诉我j绑定到viper-next-line,上面的一行将n绑定到相同的例程。对您想要转换的其余绑定重复此操作。

在现代,邪恶模式是emacs的vim仿真层,要对colemak进行调整,我的软件包帮助很大。

嘿,Trey,感谢您的详细回复。:)当你说“命令模式”时,你的意思是与插入模式相反吗?Vim调用此正常模式。实际上我想让它在正常模式下工作(移动模式)?我应该有一个更现实的“定义关键点”示例,实际上我想在正常/移动模式下将“n”变成“j”。但在插入模式下,将“n”保持为“n”。(这是因为“j”和“h,k,l”是VIM运动控制的一部分,必须转换为“n,h,e,i”Colemak的等效物)@Quang请看最新添加的内容。太棒了!非常感谢。按预期工作。:)从vim到Emacs的潜在迁移令人望而生畏。我一定会向任何感兴趣的人更新关于如何让emacs与viper+colemak一起工作的基本密钥绑定。再次感谢崔伊。
(define-key viper-vi-global-user-map "n" 'viper-next-line)