【问题标题】:Emacs define-key, Viper-mode key bindingEmacs 定义键,Viper 模式键绑定
【发布时间】:2011-05-01 23:48:19
【问题描述】:

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

使用毒蛇模式,重新绑定密钥的正确方法是什么? (我使用Colemak keyboard layout(而不是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)

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

M-x define-key [No match]

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

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

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

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

感谢您的帮助...

【问题讨论】:

    标签: emacs key-bindings viper viper-mode colemak


    【解决方案1】:

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

    首先,在.viper 中包含该行对我有用。请注意,viper-vi-global-user-map 适用于您处于 命令 模式而非插入模式时。

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

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

    我猜你在 insert 模式下发现 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)
    

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

    【讨论】:

    • 嘿Trey,感谢您的详细回复。 :) 当您说“命令模式”时,您的意思是与插入模式相反吗? Vim 称之为普通模式。其实我希望它在正常模式(运动模式)下工作?
    • 我应该有一个更现实的'define-key'示例,实际上我想在正常/移动模式下将“n”变成“j”。但在插入模式下将“n”保持为“n”。 (这是因为 "j" 和 "h,k,l" 是 VIM 移动控件的一部分,必须转换为 "n,h,e,i" Colemak 的等价物)
    • @Quang 查看最新添加。
    • 太棒了!谢谢。按预期工作。 :) 潜在地从 vim 迁移到 Emacs 是令人生畏的。我一定会向任何感兴趣的人更新如何让 emacs 与 viper+colemak 一起工作的基本键绑定。再次感谢特雷。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2011-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-06
      • 2016-12-15
      相关资源
      最近更新 更多