我已经让Fsi.exe在装有Mono的Mac (雪豹)上按预期工作了。我只是注意到了剪切和粘贴的一些奇怪的行为,我想知道是否有人见过这个。
我已经为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),但当它被隔离时不会导致错误。
如果我加载了整个文件,它也能正确解析,所以我认为我的代码没问题。
复制/粘贴中的这种奇怪之处似乎既发生在命令行上使用ledit,也可能不使用ledit。我不介意自己研究这个问题,但我有点困惑于我应该从哪里着手。我正在从GVim复制,如果这有区别的话,但是有人知道我可以从哪里开始尝试隔离这种奇怪行为的原因吗?我想我可以采取额外的步骤,首先复制到TextEdit,然后再尝试复制到fsi,但除此之外还有什么想法吗?
归根结底:还有没有人见过这种奇怪的行为?如果不是,有什么建议可以帮助我找出这种奇怪行为的原因吗?
发布于 2010-01-31 11:06:51
当我在我的Mac上遇到这种行为时,我选择了不同的方法。我没有使用ledit,而是使用了fsi的--readline选项,如下所示(其中${FSHARP}是我的安装路径)。
mono ${FSHARP}/fsi.exe --readline+ --gui-您可能还想检查您的终端设置。例如,我的终端(例如)被声明为xterm-color,而我没有选中delete sends CTRL-H。我认为这些是唯一相关的设置,但不要让我坚持它。
https://stackoverflow.com/questions/2168713
复制相似问题