出于某种原因,在 Emacs 的ansi-term窗口中启动 GHCi 后,我失去了向上箭头和 DEL 键。(在启动 GHCi 之前,这些键在ansi-term窗口中按预期工作。)并且 RET 不产生换行符,只是一个回车符。在 MacOS X 下从我的普通终端应用程序启动 GHCi 时,我没有观察到任何这些奇怪的现象。
使用 Emac 的视图丢失功能,我发现:
<menu-bar> <Terminal> <Character mode> [term-char-mode]
<up> [term-send-up]
<return> [term-send-raw]
<backspace> [term-send-backspace]
<menu-bar> <Terminal> <Line mode> [term-line-mode]
<up> [previous-line]
<return> [term-send-input]
<backspace> [delete-backward-char]
C-h l [view-lossage]
(注意:以上是在 Emacs 的ansi-term窗口中启动 GHCi后拍摄的。)
看起来我可能想在运行 GHCi 时切换到线路模式。(我通常在字符模式下运行ansi-term窗口,因为它给我的体验更类似于在终端应用程序中工作。)
看起来M-p
会恢复过去的命令。所以,如果我能弄清楚如何M-p
在 GHCi 中重新映射向上箭头,那么我应该非常接近我通常的 GHCi-in-Terminal体验。
但是,还有一个问题:点击 RET 时我仍然没有得到换行符。这真的把事情搞砸了,无论是在审美上还是在功能上。
这很奇怪,因为在ansi-term提示符或 GHCi(从ansi-term中启动)提示符(将ansi-term窗口设置为行模式)下键入的 RET 键都发送相同的命令:term-send-input
。ansi-term响应这个命令做了正确的事情。那么,为什么 GHCi 不做正确的事呢?
也许,我需要将 RET 重新映射到:CR/LF; term-send-input
在 GHCi 中?这甚至可能吗(即 - 使用ansi-term窗口进行特定于应用程序的键重新映射)?