Схема получения последней команды в guile - PullRequest
0 голосов
/ 12 апреля 2020

Обычно в терминале (или в любой другой командной строке, которую я ранее использовал), я нажимаю клавишу вверх, чтобы получить последнюю введенную команду. Однако при этом в интерпретаторе guile я просто получаю:

scheme@(guile-user) [1]> ^[[A

Какой самый простой способ получить последнюю введенную команду в guile?

1 Ответ

0 голосов
/ 14 апреля 2020

REPL командной строки часто плохо работают. Для Guile лучший опыт может быть получен, например, при работе под Geiser в emacs. Это позволяет запускать REPL в буфере emacs с гораздо лучшим контролем. В качестве долгосрочного решения я бы предложил научиться делать что-то подобное.

Существует некоторая кривая обучения, чтобы стать продуктивным в emacs (хотя и не так часто, как люди часто боятся) , К счастью, Guile предоставляет решение для тех, кто sh придерживается обычного REPL Guile.

Хотя он не включен по умолчанию, Guile может использовать библиотеку GNU Readline, Это позволяет перемещаться по истории выражений REPL с помощью клавиш со стрелками вверх и вниз. Чтобы включить эту функцию из REPL, введите:

scheme@(guile-user)> (use-modules (ice-9 readline))
scheme@(guile-user)> (activate-readline)

Когда Guile запускается в интерактивном режиме, он сначала загружает файл .guile init из домашнего каталога пользователей. Вы можете воспользоваться этим, добавив две вышеуказанные строки в файл .guile (для этого создайте новый файл .guile, если он еще не существует):

;;; Guile Scheme Init File

;; Activate Readline
;; allows navigation of expression history in REPL
(use-modules (ice-9 readline))
(activate-readline)

После обновления * Файл 1020 *, всякий раз, когда Guile запускается в интерактивном режиме, вы автоматически получаете функцию Readline.

...