【发布时间】:2013-12-08 22:32:15
【问题描述】:
如果我在终端中运行 emacs(即在 iTerm2 中使用 emacs -nw 启动 emacs)
使用windmove 和它的默认绑定,我应该能够使用Shift + → ← ↑ ↓ 的各种组合在窗口之间导航,另外paredit 具有涉及Ctrl/ 的绑定Meta + → ← ↑ ↓,这些都可以在(比如)elisp 模式缓冲区中正常工作。
看起来箭头键功能依赖于 emacs 解码终端转义序列,通过(我认为)input-decode-map
但是,如果我将主要模式设置为clojure-mode,则转义序列的解码似乎被禁用(或覆盖)。当我执行这些绑定时,我只是得到了转义序列。
clojure-mode 中的绑定发生了什么?
版本:
- emacs 24.3.1(已尝试 maxosxforemacs.com 版本和自制软件)
- clojure-mode 20131117.2306(已尝试其他版本)
- OSX 10.8.5
- iTerm2 1.0.0.20131124
(免责声明:I raised this as an issue on clojure-mode, but no solution is forthcoming)
2013/12/10 更新: 绝对清楚:这个问题是 clojure-mode 特有的。 iTerm + 箭头键中的emacs -nw 在其他主要模式下工作正常。我确定我正在做一些愚蠢的事情导致这种情况,我想知道是什么。
【问题讨论】:
-
emacs终端是什么意思?终端中的emacs?如果是,哪个模拟器? M-x describe-key 会告诉你哪个函数正在使用给定的绑定(并且会告诉你 keypress emacs 得到了什么,以防输入转换丢失的问题)。
-
看看你上面的其他帖子,我想差异可能归结为 iterm 和 xterm 之间的不兼容。尝试在 screen 或 tmux 内运行 emacs,它们会拦截输入事件,并且有时比终端本身更好地兼容。
-
@noisesmith 在
clojure-mode、clojure-mode、M-x describe-key以外的模式下一切正常,只是描述了转义序列中第一个有意义的字符(通常是 [),所以问题是特定的到clojure-mode