Як запустити попередню команду в оболонці emacs?


47

Я перебуваю в термінальному режимі на Ubuntu, і я запускаю emacs з відкритими 2 буферами, один - файл рубіну, а другий - оболонка (відкривається введенням оболонки Mx), і коли я переключаюся на буфер оболонки, я хочу запустити ту саму команду, яку я виконував раніше. Як правило, я просто натискаю стрілку вгору у вікні терміналу, але в emacs вона просто ставить курсор вгору на одну лінію.

Хтось знає про натискання клавіші для запуску попередньої команди оболонки з оболонки emacs?

Відповіді:



24

Крім того M-p, ви можете також використовувати C-up, що я вважаю кращим. Додаткові клавіші M-nабо C-downотримають вам наступну команду в історії.


1
Ах, ти. Це здається більш природним.
Лідтміт

1
Незважаючи на те, що це не було поставлено в початковому питанні, я повинен визнати, що [C-up] і [C-down] не працюють в Emacs через термінал (PuTTY).
AVP

1
Він також не працює на моєму Mac; C-up відображається на специфічну для Mac функцію.
амо

Для мене теж C-upвідображено expose. І M-pмені здається більш природним.
Індрадануш Гупта

5

Ви також можете додати це у свій файл emacs init:

(define-key comint-mode-map (kbd "<up>") 'comint-previous-input)
(define-key comint-mode-map (kbd "<down>") 'comint-next-input)

2

рішення thiagowfx є для мене кращим, оскільки я зазвичай намагаюся уникати залежності від контексту. Однак для того, щоб він працював, спочатку я повинен був додати режим завантаження comint:

(progn(require 'comint)
(define-key comint-mode-map (kbd "<up>") 'comint-previous-input)
(define-key comint-mode-map (kbd "<down>") 'comint-next-input))

0

Відповідь DeLorean88 працював на мене, але лише з другою дужкою, що закривається, у рядку "progn":

(progn(require 'comint))
(define-key comint-mode-map (kbd "<up>") 'comint-previous-input)
(define-key comint-mode-map (kbd "<down>") 'comint-next-input))

Перевірте свій файл ще раз. Другий ключ визначення повинен викликати синтаксичну помилку, оскільки остання дужка закриття не узгоджується з першою.
vfclists
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.