3 linux keyboard-shortcuts emacs
在 Linux 上,Ctrl-[组合键似乎等同于Esc按下键。我想将Ctrl-定义[为 Emacs 中的快捷方式,但我无法定义,因为当按键到达 Emacs 时,它看起来像是Esc按下了键。无论如何要禁用这种行为,以便Ctrl-[只是意味着Ctrl- [?
使用 GNOME 运行 Ubuntu 9.10。
假设您直接在窗口系统(Cocoa、MS-DOS、Windows、X 等)下运行 Emacs,而不是在文本终端(gnome-terminal、konsole、rxvt、xterm 等)内运行,这是可能的.
(define-key key-translation-map [?\C-\[] [(control left_bracket)])
(define-key key-translation-map [escape] [?\e])
(define-key function-key-map [escape] nil)
(define-key function-key-map [?\e] nil)
(when (boundp 'local-function-key-map)
;;(define-key local-function-key-map [escape] nil)
(defun remove-escape-from-local-function-key-map ()
(define-key local-function-key-map [?\e] nil)
(define-key local-function-key-map [escape] nil))
(add-hook 'term-setup-hook 'remove-escape-from-local-function-key-map))
Run Code Online (Sandbox Code Playgroud)
这里有三个不同的输入事件:
Ctrl+ [,即control修饰符和发送字符的键[。如果没有特殊情况,Emacs 通常会将其显示为C-[(并被C-[接受kbd),如下所述。
字符号 27,Esc在某些系统上由密钥发送。Emacs 将其显示为ESC显示键序列和\e字符串。
该Esc密钥本身(在X Window,这意味着Escape键符)。Emacs 将此显示为escape除非已翻译(见下文)。
Emacs 通常转换escape为ESC,但这是在相对较高的级别完成的, in function-key-map,因此可以通过修改function-key-map或定义escape全局键映射或本地键映射中的绑定来覆盖它。GNU Emacs 23 介绍了local-function-key-map哪个适用于每个终端类型。
Emacs 总是在非常低的级别(in )转换C-[为ESC, keyboard.c。这是不可配置的。
然而,Emacs 提供了一种在相对较低级别翻译键的方法:key-translation-map. 这适用于任何全局或本地绑定之前,但仅适用于不在function-key-map. 因此,关键是交流ESC,并escape在这一点上。
这些机制在 Emacs Lisp 手册的“翻译键盘映射”标题下进行了描述。
顺便说一下,类似的原则适用于
C-i, TAB,\t tabC-m, RET, \r,return| 归档时间: |
|
| 查看次数: |
2056 次 |
| 最近记录: |