Странное поведение с копией / вставкой в FSI на Mac
-
24-09-2019 - |
Вопрос
Я вроде получил fsi.exe, работаю, как ожидалось, на Mac OS X (Snow Leopard) с моно. Я только что заметил немного странного поведения с вырезом и пастой, и мне было интересно, если бы кто-нибудь видел это.
Я определил следующие псевдонимы для FSI:
alias fsi='ledit mono ~/FSharp-1.9.7.8_2/bin/fsi.exe --gui-'
LEDIT - это утилита OCAML, которая, похоже, делает ввод клавиатуры правильно - без него FSI просто никогда не читает вход. Чтобы увидеть, что я имею в виду, попробуйте fsi.exe без LEDIT и введите
let square x = x * x;;
Без LEDIT это просто никогда не разбирает вход. Я имею в виду, что это никогда не возвращается в подсказку «>» после ввода строки. С помощью LEDIT, подсказка «>» возвращается немедленно.
Конечно, --gui- поддерживает FSI от отображения всех сообщений о отсутствии системы.
Так что это все, кажется, работает. Странность - это когда я копирую код и вставьте код в FSI, некоторые символы, кажется, повторяются снова и снова. Похоже, это обусловлено размером буфера, в которую я вставляю. Когда я вставляю небольшие фрагменты, кажется, нет проблем. Но если я встаю в большие куски, есть эта странность.
Если я сделаю следующее:
open System.IO;;
Затем вставьте этот фрагмент кода в FSI:
let buildFileList basepath filespec =
seq {
yield! Directory.GetFiles(basepath, filespec, System.IO.SearchOption.AllDirectories)
}
Это работает нормально. Но если я копирую и вставку в большую кусок кода, заканчивающийся этим, он повторяет часть дохода! снова и снова. Кажется, как-то связано с FSI, пытаясь анализировать код, так как он вставлен, потому что тот же код вставлен, приведет к призванию ошибок анализа (например, FS0010), когда он вставлен в конце длинного куска, но не вызывает ошибку, когда Это изолирована.
Если я # загружаю весь файл, он так хорошо, так что я думаю, что мой код в порядке.
Эта странность в копировании / пасте, кажется, происходит как с и без LEDIT в командной строке. Я не против исследования этого вопроса себя, но я вроде ошеломлен, где я должен приступить к этому. Я копирую из GVIM, если это имеет значение, но у кого-нибудь есть идеи, где я мог бы продолжать пытаться изолировать причину этого странного поведения? Я полагаю, что я могу сначала взять дополнительный шаг копирования в Tequeptedit, а затем пытаюсь скопировать FSI, но любые идеи за пределы этого?
Внизу это: кто-нибудь еще видел это странное поведение? Если нет, какие-либо предложения о том, как я мог бы продолжать пытаться изолировать причину этого странного поведения?
Решение
Когда я столкнулся с этим поведением на моем Mac, я пошел другой маршрут. Вместо того, чтобы использовать ledit
, Я работал fsi
С. --readline
вариант, видели ниже (где ${FSHARP}
мой путь установки).
mono ${FSHARP}/fsi.exe --readline+ --gui-
Вы также можете проверить настройки терминала. Мой терминал (например) объявлен как xterm-color
, и я не провел delete sends CTRL-H
. Отказ Я думаю, что это единственные соответствующие настройки, но не держите меня к нему.