2016-11-29 5 views
3

Я хотел бы работать в ESS/R в emacs способом, подобным терминальному режиму. То есть, я не хочу, чтобы курсор отходил от командной строки, когда я пытаюсь скопировать какой-либо текст из консоли R. Также я хотел бы переподтвердить клавишу со стрелкой вверх до предыдущей команды.Можно ли использовать R в emacs, подобном термическому режиму?

ответ

3

Твой путь

«предыдущий» и «следующий» команды используют соответственно 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-rkeywords будет искать назад в буфере. Если курсор находится на предыдущей команде, <enter> будет повторно выполнять команду
  • для копирования/вставки Я не использую мышь, но M-w (копия) и C-y (вставить), где находится курсор. M-y заменит вашу пасту предыдущими скопированными записями.

Возможно, это изменяет ваши привычки или ярлыки из других приложений для настольных компьютеров. Тем не менее, с яркой стороны, эти repl ведут себя последовательно в Emacs. Каждый раз, когда вы используете repl, эти клавиши выполняют задание по назначению.