我已经让 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,但除此之外还有什么想法吗?
归根结底:还有其他人见过这种奇怪的行为吗?如果没有,关于我如何继续尝试找出这种奇怪行为的原因的任何建议?