我刚刚使用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
获得的转义序列进行类似的映射。不愿为类似问题创建另一个问题。
答案 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- {上,下,右,左}。