1

Я использую term Emacs и Mx для терминала. Так как мой типичный рабочий процесс выглядит так:

  • редактировать некоторый код
  • Cx o к терминальному буферу (или Cx b term[Enter] или что-то)
  • нажмите клавишу « Вверх», чтобы использовать последнюю команду
  • нажмите Enter, чтобы запустить его
  • Cx o, чтобы вернуться

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

Итак, команда должна:

  • перейдите в буфер с терминалом (возможно, он вообще не должен менять окна, может быть, он должен разделить окно по вертикали (если оно еще не было разделено) и использовать правильный sid)
  • запустить последнюю команду, что там пробежал
  • вернуться к последнему буферу / части экрана

Спасибо! Я не очень привык к системе сценариев Emacs, и я надеюсь, что кто-то мне поможет, а кто-то другой сможет использовать ответ для улучшения своего рабочего процесса, так как я считаю, что это довольно распространенный вопрос.


Примеры команд:

python manage.py test
python manage.py test stats
python solve.py # for project-euler puzzles :-)

первый и второй работает иногда по ssh (в терминале) (мне нравится разрабатывать с помощью vagrant)

Я понимаю, что легко связать первое и третье, но второе меняется слишком часто - я просто хотел бы "выполнить последнюю команду"

2 ответа2

1

Быстро и грязно - определите макрос:

F3
C-x b term RET
UP RET
C-x b RET
F4

Теперь снова нажмите F4 чтобы повторить действия, которые вы сделали между последней парой F3/F4 . С макросами вы можете сделать гораздо больше, в том числе иметь более одного макроса, редактировать макросы, сохранять макросы в .emacs и т.д. Для получения дополнительной информации обратитесь к руководству по EmacsWiki и Emacs .

0

Разве M-x compile позволяет делать нечто подобное? Это позволяет вам ввести пользовательскую команду и запустить ее, а затем повторить это в следующий раз ...

Что ж, возможно, будут проблемы с интерактивными командами (вот почему вы хотели бы использовать термин), а также, возможно, и с постоянным многоразовым ssh-соединением (но здесь может помочь TRAMP: cd REMOTELOCATION; your_cmd может работать).

Поэтому, по крайней мере, вы можете посмотреть на исходный код compile чтобы узнать, как буферы создаются для такого сценария и как выполняются команды.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .