8

我刚刚从使用 Emacs.app 切换到使用 iterm2 作为终端仿真器的终端模式下的 emacs 服务器和 emacsclient。不过,我在某些键绑定方面遇到了一些麻烦。特别是 M-left 箭头打印字符 D,M-right 箭头打印 C,M-up 箭头打印 A,M-down 箭头打印 B.M-ret 似乎工作,至少对于 org 模式。我对 iterm2 中的键使用 xterm 默认值,并将左右选项键绑定到 +Esc。我可以使用 Esc-left 或 Esc-right 在 org-mode 中获得 M-left 功能 这在 org-mode 中特别烦人。我是否只需要重新绑定 .emacs 中的键?我该怎么做呢?

我看过这个http://orgmode.org/manual/TTY-keys.html#TTY-keys,但我不明白为什么终端中的箭头键不可用。

编辑:

猫元向上:^[[1;9A 猫元向下:^[[1;9B 猫元右:^[[1;9C 猫元左:^[[1;9D

主要问题已解决,但我现在遇到了shift-up. "<select> undefined". 我尝试使用从cat:获得的转义序列进行类似的映射^[[1;2A。不愿意为类似问题创建另一个问题。

4

2 回答 2

12

解决方案 1

根据您在此处提供的信息,您可以尝试一件事。您告诉 emacs 将这些转义序列映射到正确的键序列:

(add-hook 'term-setup-hook
  '(lambda ()
     (define-key function-key-map "\e[1;9A" [M-up])
     (define-key function-key-map "\e[1;9B" [M-down])
     (define-key function-key-map "\e[1;9C" [M-right])
     (define-key function-key-map "\e[1;9D" [M-left])))

解决方案 2

我还通过谷歌搜索找到了另一种可能的解决方案:重新定义 iTerm 绑定以匹配 emacs 正在寻找的内容。

http://offbytwo.com/2012/01/15/emacs-plus-paredit-under-terminal.html

从上面的页面引用:

返回到 iTerm2 下的配置文件键绑定并添加以下绑定:

M-up      : Esc-[1;4A
M-down    : Esc-[1;4B
M-right   : Esc-[1;4C
M-left    : Esc-[1;4D
于 2012-06-03T01:58:02.677 回答
2

我正在回答您的“主要问题已解决,但有新问题”编辑。

我在这个问题上找到了这个人的博客文章: - http://webframp.com/emacs/2013/02/22/fixing-emacs-bindings-on-the-in-iterm2/

基本上,您可以使用“运行猫”和按钮技巧来查看系统/终端发送的转义码,然后添加“定义键”行来定义 M-{up,down,right,left} 和还有 MS-{上、下、右、左}。

于 2013-09-17T16:03:33.637 回答