emacs、term-mode を使用するカスタム コマンドの作成

emacs、term-mode を使用するカスタム コマンドの作成

私は Emacs とM-xtermターミナルを使用しています。私の典型的なワークフローは次のようになります。

  • コードを編集する
  • C-x o端末バッファ(またはC-x bterm[Enter]何か)に
  • Up最後のコマンドを使用するにはキーを押してください
  • Enter実行するには押してください
  • C-x o戻る

これらすべて (最初のステップを除く... 多分) を 1 つのコマンドにバインドしたいのですが、Emacs はそれを実現するのに十分優れていると思います :-)

したがって、コマンドは次のようになります。

  • ターミナルでバッファに移動します (ウィンドウはまったく変更されないかもしれませんが、ウィンドウを垂直に分割し (すでに分割されていない場合)、右側の sid を使用する必要があります)
  • 最後のコマンドを実行すると何が実行されるか
  • 最後のバッファ/画面の一部に戻る

ありがとうございます。私はEmacsのスクリプトシステムにあまり慣れていないので、誰かが私を助けてくれることを願っています。また、誰かがこの回答を使ってワークフローを改善できるようになることを願っています。これはかなり一般的な問題だと思います。


コマンドの例:

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

1番目と2番目は時々ssh(ターミナル内)で実行されます(私は で開発するのが好きですvagrant

1番目と3番目をバインドするのは簡単だとは思いますが、2番目は頻繁に変更されるため、「最後のコマンドを実行」したいだけです。

答え1

簡単にマクロを定義します:

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

もう一度押すと、最後の/ペアF4の間に実行したアクションが繰り返されます。マクロを使用すると、複数のマクロを作成したり、マクロを編集したり、マクロを に保存したりなど、さらに多くのことができます。詳細については、F3F4.emacsEmacsWikiそしてEmacsマニュアル

答え2

同様のことを実行できないでしょうかM-x compile? カスタム コマンドを入力して実行し、次回これを繰り返すことができます...

まあ、おそらく対話型コマンドでは問題が発生するでしょう (そのため、用語を使用したいのです)。また、永続的で再利用可能な ssh 接続でも問題が発生する可能性があります (ただし、ここでは TRAMP が役立つ可能性があります:cd REMOTELOCATION; your_cmd動作するかもしれません)。

したがって、少なくとも、compileのソース コードを調べて、このようなシナリオでバッファがどのように管理され、コマンドがどのように実行されるかを学ぶことができます。

関連情報