Я хотел бы работать в ESS/R в emacs способом, подобным терминальному режиму. То есть, я не хочу, чтобы курсор отходил от командной строки, когда я пытаюсь скопировать какой-либо текст из консоли R. Также я хотел бы переподтвердить клавишу со стрелкой вверх до предыдущей команды.Можно ли использовать R в emacs, подобном термическому режиму?
ответ
Твой путь
«предыдущий» и «следующий» команды используют соответственно comint-previous-input
и comint-next-input
функции. Они могут быть сопоставлены с ключом up
и down
стрелки:
(define-key comint-mode-map [up] 'comint-previous-input)
(define-key comint-mode-map [down] 'comint-next-input)
Я не знаю о решении заблокировать курсор в то время как копировать/вставить.
Если вы действительно хотите поведение консоли, возможно, вам следует просто использовать консоль, поскольку она будет соответствовать вашим пожеланиям.
Bonus: по умолчанию Emacs путь
Я не использую R
, но я использую octave
, clojure
и в Emacs также bash
. Все эти repl (Read–eval–print loop) ведут себя одинаково. Например, клавиши со стрелками просто перемещают курсор.
Вот краткий обзор моего использования в РЕПЛ:
M->
приведет меня к нижней части буфераC-<up>
будет цикл по предыдущим командамC-<down>
цикличес- вдоль следующих командC-r
keywords
будет искать назад в буфере. Если курсор находится на предыдущей команде,<enter>
будет повторно выполнять команду- для копирования/вставки Я не использую мышь, но
M-w
(копия) иC-y
(вставить), где находится курсор.M-y
заменит вашу пасту предыдущими скопированными записями.
Возможно, это изменяет ваши привычки или ярлыки из других приложений для настольных компьютеров. Тем не менее, с яркой стороны, эти repl ведут себя последовательно в Emacs. Каждый раз, когда вы используете repl, эти клавиши выполняют задание по назначению.