Git Bash 中的 GHCI 中的制表符补全和箭头键不起作用

Tab completion and arrow keys don't work in GHCI in Git Bash

当我在 Git Bash 中打开 ghcii.sh(Glasgow Haskell Compiler Interactive)时,正常的制表符、退格键和箭头键无法按预期工作。

例如,如果我键入 :lo + Tab,我希望它能完成 :load 的语句。相反发生的是光标跳到右边(我猜是跳到下一个制表位)。

然后,如果我使用Backspace返回并填写命令'manually',会发生这种情况:

Prelude> :load PrettyJSON.hs

<interactive>:2:1:
    Not in scope: `ad'
    Perhaps you meant one of these:
      `and' (imported from Prelude), `id' (imported from Prelude)

<interactive>:2:4: Not in scope: `PrettyJSON.hs'

这是我幸运的时候。有时,我什至不能 Backspace 一路返回,而是卡在 :lo 右侧的某处(或我试图发出的任何其他命令)。不过,我仍然可以按 Enter,再试一次。

箭头键不调用命令历史记录。如果我按 ,光标会向上移动,但我本以为它会在我的命令历史记录中循环。

这个问题似乎与 Git Bash 有关,因为 GHCI 在同一台机器上的 PowerShell 中可以正常工作。在我 运行 Git Bash 的早期版本(git 版本 1.9.5.msysgit.1)的其他机器上,我没有这个问题,所以它似乎与这个特定版本有关(git 版本 2.5.1.windows.1)。

我的操作系统是 Windows10 64 位。一开始我以为这个问题和64位GitBash有关,因为这是我第一次在GitBash上看到64位的GitBash =48=],但我也尝试安装 32 位 Git Bash,它表现出完全相同的行为。

是否可以让 GHCI 在此环境中正常运行?

这里没有收到任何回复,我cross-posted the question to the project's GitHub repository

显然,这个问题似乎与 mintty 终端仿真器有关。如果您使用 ConHost 模拟器安装 Git Bash,问题就会消失。

对于 Google 搜索后仍然来到这里的任何人...

无需更改 Git Bash 的启动方式,您可以直接从 GHCi 开始 菜单(这已经使用 Windows 控制台 运行它)。只需在 Start menu/screen 中输入 GHCi 并等待结果。奖励是控制台标题栏中的漂亮 Haskell 图标 :P

您也可以尝试 WinGHCi,它应该已经安装了。

这可能是由于随后几年添加的新功能,但 Git Bash 随 winpty 一起提供并且它似乎与 GHCi 一起用于 Windows :

$ winpty stack ghci