Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 哈斯克尔:GHCi对待Ctrl-Y就像对待Ctrl-Z一样_Haskell_Ghci_Haskeline - Fatal编程技术网

Haskell 哈斯克尔:GHCi对待Ctrl-Y就像对待Ctrl-Z一样

Haskell 哈斯克尔:GHCi对待Ctrl-Y就像对待Ctrl-Z一样,haskell,ghci,haskeline,Haskell,Ghci,Haskeline,根据haskeline,键入CTRL+Y应弹出压井环中的最新条目(例如,我刚刚通过CTRL+U删除的行)。相反,我发现它挂起了REPL,就像我键入了CTRL+Z一样 作为一种笨拙的解决方法,我发现键入CTRL+V CTRL+Y会像简单的CTRL+Y一样从杀环弹出 这是一个已知的错误,还是其他原因在起作用?我能修一下吗?我正在运行GHC 8.0.2版 不确定这是否重要,但我正在通过stack运行GHCi(例如,stack GHCi),并且我在brew中安装了stack(macOS)。Mac OS终

根据haskeline,键入CTRL+Y应弹出压井环中的最新条目(例如,我刚刚通过CTRL+U删除的行)。相反,我发现它挂起了REPL,就像我键入了CTRL+Z一样

作为一种笨拙的解决方法,我发现键入CTRL+V CTRL+Y会像简单的CTRL+Y一样从杀环弹出

这是一个已知的错误,还是其他原因在起作用?我能修一下吗?我正在运行GHC 8.0.2版


不确定这是否重要,但我正在通过stack运行GHCi(例如,
stack GHCi
),并且我在brew中安装了stack(macOS)。

Mac OS终端/TTY有一个“dsusp”或“延迟挂起”键的概念,Ctrl-Y是通常分配的键。在tty级别,当读取CTRL+Y时,它的行为有点像CTRL+Z。区别在于CTRL+Z在键入时会导致立即挂起;当底层进程尝试读取字符并且输入流中弹出CTRL+Y标记时,CTRL+Y会导致挂起

(CTRL+V通常分配给“lnext”键,该键通过使下一个键为“literal”跳过终端处理,这就是CTRL+V CTRL+Y工作的原因。)

理想情况下,GHCi将检查“dsusp”功能(例如,它在Linux上不存在),并在检测到它时禁用它,但看起来它没有这样做

同时,您可以通过运行以下命令禁用“dsusp”密钥:

stty dsusp undef

在启动GHCi之前。在你的“.bashrc”和/或“.profile”中加入这个是一个好主意,因为它的功能基本上是无用的。

我很确定堆栈是不相关的,但你应该报告GHC版本。太好了,谢谢!我很好奇为什么这从来没有妨碍过Bash中的Ctrl-Y yank行为。我猜当我已经在父shell中时,暂停当前作业是没有意义的?好吧,Bash包含特定的代码来防止Ctrl-Y(或Ctrl-Z)在shell提示符本身产生影响。如果不这样做,Bash将像任何其他进程一样挂起(并且可能会在没有准备好处理它的父进程的情况下冻结),这是非常有意义的。谢谢你的澄清。