M-.
(meta-dot または esc-dot または alt-dot) が readline 関数であるようyank-last-arg
に、M-C-y
(meta-control-y または esc-ctrl-y または ctrl-alt-y) は readline 関数yank-nth-arg
です。を指定n
しないと、前のコマンドの最初の引数がヤンクされます。
引数を指定するには、Escape と数字を押すか、Alt を押しながら数字を押します。できることAlt--負の数の指定を開始するには、Alt を放して数字を押します (これは、引数のリストの最後からカウントされます。
例:
次のコマンドを入力します
$ echo a b c d e f g
a b c d e f g
次のプロンプトで、echo
(後にスペースを入れて) 入力し、次に
Alt- Ctrl-を押すyと、次のように表示されます。
$ echo a
Enterまだ押さずに、次の操作を行います
押すAlt- 3 Alt- Ctrl-y
押すAlt- - 2 Alt- Ctrl-y
次のように表示されます。
$ echo ace
ところで、echo
引数 0 を選択することで、行に置くことができました。
押すAlt- 0 Alt- Ctrl-y
編集:
元の質問に追加した質問に答えるには:
を押してAlt-0を繰り返し押して、前のコマンド (引数 0) をステップ実行Altできます。.同様にAlt--次に繰り返すAlt-.前の最後から 2 番目の引数をステップ実行できます。
履歴の特定の行に適切な議論がない場合、ベルが鳴らされます。
頻繁に使用する特定の組み合わせがある場合は、マクロを定義して、1 回のキーストロークでそれが実行されるようにすることができます。Altこの例では、 - Shift-を押すことで、前のコマンドの 2 番目の引数を呼び出しますY。このキーストロークの代わりに、任意の利用可能なキーストロークを選択できます。繰り返し押すと、前のものに進むことができます。
試すには、Bash プロンプトでマクロを入力します。
bind '"\eY": "\e2\e."'
永続化するには、次の行を~/.inputrc
ファイルに追加します。
"\eY": "\e2\e."
残念ながら、これは引数 0 または負の引数番号では機能しないようです。