Bashシェルから古い行を現在の行に挿入する方法は?

Bashシェルから古い行を現在の行に挿入する方法は?

!!Bashでシェル内でインタラクティブにコマンドを編集するときにコマンドラインをどのように拡張しますか?vi編集モードで作業しています。

新しいコマンドラインが入力されたら、前の行をインポートして拡張したいと思います。

コマンドを実行する前に拡張したいと思います。

答え1

emacsモードで試すことができますAlt-^(に似ていますが、Ctrl-Alt-e動作するはずです)。ただ歴史的拡張)。

機能しない場合(たとえば、viモードで履歴拡張のデフォルトバインディングがない場合)、手動でバインディングを追加できます。

bind '"\e^": history-expand-line'

.bashrc どこかに

"\e^": history-expand-line

あなたの.inputrcから

直す。いくつかの注意:

  1. すべてが問題ない場合は、前のコマンドでシーケンスをAlt-^置き換えることができるはずです!!。たとえば、次のようにecho "!!"なります。echo "previous_command with args"
  2. 期待どおりに機能しない場合は、バインディングを確認できますbind -P | grep history-expand(次のような結果を返す必要がありますhistory-expand-line can be found on "\e^")。

答え2

これはあなたに役立ちます:

echo abc
!! 

次に、Ctrl-Alt-e(またはemacs用語でCMe)を同時に入力します。

echo abc

答え3

これにより、M-,emacsモードで前の行が挿入されます。

"\e,": "!!\e^"

!!スペースインジケータをバインドして拡張することもできますmagic-space

" ": magic-space

関連情報