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

jrh*_*424 7 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耐心地为我提供解决方案.

Gil*_*il' 9

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

通常,Emacs会将这些字符序列转换回键名,但似乎开发人员错过了这个.您可以自己定义它

(add-hook 'term-setup-hook
          (lambda () (define-key input-decode-map "\e[Z" [backtab])))
Run Code Online (Sandbox Code Playgroud)

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

某些模式可以定义绑定S-tab而不是绑定backtab.如果你有Emacs 23,(define-key function-key-map [S-tab] [backtab])应该使这些模式工作.

  • @ jrhorn424:你的终端似乎发送了`ESC [Z`,而不是`ESC [z`.(顺便说一下,这是标准顺序,如您的参考文献所示.)如果在Lisp代码中使用大写字母Z,它是否有效? (2认同)