emacs,編寫使用 term-mode 的自訂命令

emacs,編寫使用 term-mode 的自訂命令

我正在使用 Emacs 和M-xterm終端。因為我的典型工作流程如下圖所示:

  • 編輯一些程式碼
  • C-x o到終端緩衝區(或C-x bterm[Enter]其他東西)
  • 按鍵Up使用最後一個指令
  • Enter運行它
  • C-x o回去

我想將所有這些(除了第一步......也許)綁定到一個命令,我相信 Emacs 足以做到這一點:-)

因此,命令必須:

  • 使用終端轉到緩衝區(也許它根本不應該更改任何窗口,也許它應該垂直分割窗口(如果尚未分割)並使用正確的 sid)
  • 運行最後一個命令,運行在那裡
  • 返回最後一個緩衝區/螢幕的一部分

謝謝你!我不太習慣 Emacs 腳本系統,我希望有人能幫助我,並且其他人能夠使用答案來改進他的工作流程,因為我相信這是一個非常常見的問題


命令範例:

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

第一個和第二個有時會透過 ssh (在終端機中)運作(我喜歡使用 進行開發vagrant

我知道綁定第一個和第三個很容易,但是第二個更改太頻繁 - 我只想“運行最後一個命令”

答案1

快速而骯髒 - 定義一個巨集:

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

現在再次按下將重複您在最後/對F4之間所做的操作。您可以使用巨集執行更多操作,包括擁有多個巨集、編輯巨集、將巨集儲存在等中。F3F4.emacsEmacs維基Emacs手冊

答案2

不允許M-x compile做類似的事嗎?它允許您輸入自訂命令並運行它,然後下次重複此操作...

好吧,互動式命令可能會出現問題(這就是您想要使用術語的原因),也許持久性可重複使用 ssh 連接也會出現問題(但 TRAMP 可以在這裡提供幫助:cd REMOTELOCATION; your_cmd可以工作)。

因此,至少,您可以查看compile的原始程式碼來了解如何在這種情況下管理緩衝區以及如何執行命令。

相關內容