如何在Emacs的ansi-term窗口中使GHCi正常运行?

时间:2018-11-02 14:13:56

标签: emacs ghci ansi-term

由于某种原因,在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 窗口进行应用程序特定的键重新映射)吗?

0 个答案:

没有答案