由于某种原因,在Emacs的 ansi-term 窗口中启动GHCi之后,我失去了向上箭头和DEL键。 (在启动GHCi之前,这些键可以在 ansi-term 窗口中正常工作。) RET不会产生换行符,只会产生回车符。 在MacOS X下从普通的 Terminal 应用程序启动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时,我可能想切换到 Line 模式。 (我通常在 Character 模式下运行 ansi-term 窗口,因为它给我的体验更类似于在 Terminal 应用程序中工作。)
看来M-p
将恢复过去的命令。
因此,如果我能弄清楚在GHCi中如何将向上箭头重新映射到M-p
,那么我应该与我通常的 GHCi终端体验非常接近。>
但是,仍然存在一个问题:按下RET时,我仍然没有换行。 这确实在美学和功能上都搞砸了。
这很奇怪,因为在 ansi-term 提示符或GHCi(从 ansi-term 内部启动)提示符下键入RET键(使用设置为 Line 模式的> ansi-term 窗口)都发送相同的命令:term-send-input
。
而 ansi-term 会响应此命令而做正确的事情。
那么,GHCi为什么不做正确的事情?
也许在GHCi中需要将RET重新映射为:CR/LF; term-send-input
?
甚至有可能(即-使用 ansi-term 窗口进行应用程序特定的键重新映射)吗?