Shift-Tab在Emacs中产生神秘错误

时间:2010-08-19 05:01:06

标签: emacs emacs23 org-mode

我正在尝试学习org-mode并注意到当我退出emacs时我的文件整齐折叠。在尝试展开整个文件时按S-TAB,我在迷你缓冲区中收到以下错误消息:M-[ z is undefined。谷歌搜索错误没有帮助。知道打嗝发生在哪里以及我如何解决它?

我正在使用Mac OS X 10.6.4和Terminal.app,GNU Emacs 23.2.1。

编辑:我现在可以确认问题是Terminal.app。我没有使用Carbon Emacs或在iTerm.app中使用Emacs时收到此错误消息。

感谢Gilles耐心地帮助我解决问题。

2 个答案:

答案 0 :(得分:9)

终端与其内部运行的程序(此处为Emacs)之间的接口只能发送字符,而不能发送密钥。因此,特殊键或键组合通常会发送以ESC开头的键序列。例如,您的终端显然会发送ESC [ Z Shift + Tab

通常,Emacs会将这些字符序列转换回键名,但似乎开发人员错过了这个。您可以使用

自行定义
(add-hook 'term-setup-hook
          (lambda () (define-key input-decode-map "\e[Z" [backtab])))

(对于Emacs< = 22,只需使用(define-key function-key-map "\e[Z" [backtab])。)

某些模式可能会定义S-tab而非backtab的绑定。如果你有Emacs 23,(define-key function-key-map [S-tab] [backtab])应该使这些模式有效。

答案 1 :(得分:1)

与原版海报一样,我使用的是Mac OS X,但是版本10.6.8和GNU Emacs 23.4.1。我遇到了与S-Tab和org-mode相同的问题。我能够通过以下步骤来解决这个问题:http://stuff.mit.edu/afs/sipb/user/daveg/Info/backtab-howto.txt