1

我已经让 Fsi.exe 在带有 Mono 的 Mac OS X (Snow Leopard) 上按预期工作了。我只是注意到剪切和粘贴的一些奇怪行为,我想知道是否有人看过这个。

我为 fsi 定义了以下别名:

alias fsi='ledit mono ~/FSharp-1.9.7.8_2/bin/fsi.exe --gui-'

ledit 是一个 Ocaml 实用程序,它似乎可以使键盘输入正常工作——没有它,fsi 似乎永远不会读取输入。要明白我的意思,请尝试不带 ledit 的 Fsi.exe 并输入

let square x = x * x;;

没有 ledit,它似乎永远不会解析输入。我的意思是在您输入字符串后它永远不会返回“>”提示。使用 ledit,“>”提示符会立即返回。

当然,--gui- 使 fsi 无法显示有关缺少 System.Drawing 等的所有消息。

所以这一切似乎都奏效了。奇怪的是,当我将代码复制并粘贴到 FSI 中时,某些字符似乎一遍又一遍地重复。它似乎取决于我要粘贴的缓冲区的大小。当我粘贴小片段时,似乎没有问题。但如果我粘贴更大的块,就会出现这种奇怪现象。

如果我执行以下操作:

open System.IO;;

然后将此代码段粘贴到 FSI 中:

let buildFileList basepath filespec =
    seq {
        yield! Directory.GetFiles(basepath, filespec, System.IO.SearchOption.AllDirectories)
        }

这很好用。但是,如果我复制并粘贴以该结尾的更大代码块,它会重复该部分直到产量!一遍又一遍地。它似乎与 fsi 在粘贴时尝试解析代码有关,因为粘贴的相同代码在粘贴到长块末尾时会导致解析错误(如 FS0010),但不会导致错误它是孤立的。

如果我 #load 整个文件,它也会正确解析,所以我认为我的代码没问题。

复制/粘贴中的这种奇怪现象似乎在命令行上使用和不使用 ledit 时都会发生。我不介意自己研究这个问题,但我有点难过我应该从哪里着手。如果这会有所不同,我会从 GVim 复制,但有人知道我可以在哪里尝试找出这种奇怪行为的原因吗?我想我可以采取额外的步骤,先复制到 TextEdit,然后尝试复制到 fsi,但除此之外还有什么想法吗?

归根结底:还有其他人见过这种奇怪的行为吗?如果没有,关于我如何继续尝试找出这种奇怪行为的原因的任何建议?

4

1 回答 1

2

当我在我的 Mac 上遇到这种行为时,我走了一条不同的路线。ledit我没有使用,而是使用了fsi's--readline选项,如下所示(${FSHARP}我的安装路径在哪里)。

mono ${FSHARP}/fsi.exe --readline+ --gui-

您可能还想检查您的终端设置。我的终端(例如)被声明为xterm-color,并且我没有选中delete sends CTRL-H。我认为这些是唯一相关的设置,但不要强迫我这样做。

于 2010-01-31T03:06:50.993 回答