「最後の繰り返し」ボタンを備えた端末

「最後の繰り返し」ボタンを備えた端末

私はよく何かをコンパイルするので、同じコマンドを何度も繰り返し実行します。そこで、自分の「視覚的記憶」を活用して、ターミナルに「最後のコマンドを繰り返す」ボタンのようなものを取り付けたいと思っています。より正確には、次のように考えています。

  • 私の「特別な」端末は、標準の端末エミュレータとまったく同じで、下部に追加の入力行があり、そこに「実行」ボタンが付いています。ボタンをクリックすると、コマンドが実行されます。それなしそれを消去します。
  • おそらく、このようなコマンドは任意の数だけ積み重ねることもできます (2 つまたは 3 つのコマンドを交互に実行する必要があることが多いため)。

Enterキーボードだけで最後のコマンドをやり直せることはわかっていますが、よく起こるのは、別のコマンドを入力する必要があったことを忘れてしまうことです (何かを修正するためなど) 。そのため、履歴から適切なコマンドを取得できません。そのため、反射的に入力するのではなく、Enter キーを押す前に実際にコマンドを読んで (少なくともざっと目を通す) 必要があります。

どこかにそのような仕掛けがあるのでしょうか? 私は、常に各ターミナルが最後に「正しい」コマンドを持っていることを確認するために、複数のターミナルを頻繁に使用しますが、Alt+Tabスキルのせいで、間違ったウィンドウにタブ移動してしまうことがよくあります。また、環境や cwd などのターミナル情報が必要なので、コード エディターで「統合」することはできません。つまり、Alt+F2と thenを使用しEnterても機能しません (ターミナルからの出力も読み取る必要があるため)。キーボードと視覚メモリ (クリック経由) の両方の最高の機能を同時に使用できるようにしたいだけです。

答え1

ここでは履歴の拡張が非常に役立つと思います。たとえば、と入力する!pと、'p' で始まる最後のコマンドが実行されます。同様に、!vi'vi' で始まる最後のコマンドが実行されます。詳細情報ここどれが最後のコマンドか分からない場合は、シェルオプションhistverifyshopt -s histverify)を設定すれば、実行する前にコマンドを編集(または検査)することができます。ここ

あるいは、履歴検索機能を使用することもできます。bash で、 を押してCtrl+R、履歴で検索したいコマンドを入力します (条件に一致する最新のコマンドから開始します)。Ctrl+R繰り返し押すと、条件に一致する古いコマンドが再び表示されます。詳細情報ここそしてここ

興味があれば、readline の inputrc を変更して、上矢印/下矢印で履歴検索を実行することもできます。詳細情報ここそしてここ

答え2

シェルの履歴機能を見てみましょう。私の zsh では次のようになります:

!!

最後のコマンドを繰り返します。

history最後のいくつかのエントリを確認するには入力してください。

シェルで目的のバッファを取得するには:

man zshzle

または

man readline

また、タブで補完を展開することもできます

make long_target
ls some_path
...
make l<TAB> # prints 'make long_target' without running it

ワイルドカードや拡張を使用します... この機能の範囲外にユースケースは存在しません。

答え3

+を使用すると、zshまさにそれが実行できます。コマンドを入力して、の代わりに+ を押します。コマンドが実行され、コマンドが完了すると、同じコマンドが行バッファに表示されます。EscAEscAEnter

答え4

非常に簡単な答えが必要なようです。Alt+について言及されているのでTab、(X)windows を使用していると想定します。 Enter キーを押す前に、マウスでコマンドを強調表示します。強調表示すると、自動的にクリップボードにコピーされます。貼り付けるには、マウスの中央ボタン (スクロール ホイール) を押すか、Shift+と入力しますInsert

関連情報