在Mac上复制/粘贴到FSI的奇怪行为

时间:2010-01-30 17:28:42

标签: macos f# f#-interactive ledit

我有点像在Mac OS X(Snow Leopard)上使用Mono的Fsi.exe正常工作。我只是注意到了一些奇怪的剪切和粘贴行为,我想知道是否有人见过这个。

我为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,但除此以外的任何想法?

为了底线这个:还有其他人看到过这种奇怪的行为吗?如果没有,关于我如何继续试图找出这种奇怪行为的原因的任何建议?

1 个答案:

答案 0 :(得分:2)

当我在Mac上遇到此行为时,我走了另一条路。我没有使用ledit,而是使用fsi的{​​{1}}选项,如下所示(其中--readline是我的安装路径)。

${FSHARP}

您可能还想检查终端设置。我的终端(例如)被声明为mono ${FSHARP}/fsi.exe --readline+ --gui- ,我取消选中xterm-color。我认为这些是唯一相关的设置,但不要诱使我。