终端元箭头键绑定中的emacs

时间:2012-06-03 01:17:02

标签: macos emacs terminal

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

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

编辑:

Cat meta-up:^[[1;9A Cat meta-down:^[[1;9B Cat meta-right:^[[1;9C 猫元左:^[[1;9D

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

2 个答案:

答案 0 :(得分:11)

解决方案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

答案 1 :(得分:2)

我正在回答您的'主要问题已解决但新问题'。编辑。

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

基本上,您可以使用'run cat'和按钮技巧来查看系统/终端发送的转义码,然后添加'define-key'行来定义M- {up,down,right,左}和MS- {上,下,右,左}。