VSCode FSharp Interactive 终端中的奇怪字符

Strange characters in VSCode FSharp Interactive terminal

我尝试在 Ubuntu 下玩 fsharp(是的,我慢慢发现它是痛苦多于乐趣),我已经安装了 Mono、VSCode 和 Ionide 扩展,我可以创建和构建 F# 项目。不幸的是,当我通过 F# Interactive 运行 简单的 F# 脚本时:

printfn "bar"

在终端 window 我得到:

>
- printfn "bar"
-
- ;;
bar
val it : unit = () F# 4.0 (Open Source Edition)
> ^?^?414;3R^?^?^?^?^?^? the Apache 2.0 Open Source License

奇怪的序列 ^?^? 看起来像是无法识别的终端转义码,但是当我在 VSCode 中使用 bash 时,就没有这样的东西了。

而且在 FSI 中执行每条命令后都会重新出现奇怪的序列:

> let j = 9;;

val j : int = 9

> printfn "foo";;
foo
val it : unit = ()
> ^?^? 

有没有人遇到同样的问题并且知道解决方案(或者可能只是知道解决方案)?

编辑:问题主要发生在我通过 Ionide Alt+Enter 快捷方式执行命令时

这看起来像 https://github.com/Microsoft/vscode/issues/19766 错误。 VS Code 1.9 引入了一个新设置 terminal.integrated.flowControl,默认为 true。您看到的 ^? 个字符(以及可能出现的任何 ^S^Q 个字符)来自此 "flow control" 功能,它不能很好地与 F# Interactive 配合使用.更改您的 VS Code 设置以将 terminal.integrated.flowControl 设置为 false,您的问题应该会消失。