zsh
では、キーの組み合わせ Alt+. はinsert-last-Word
にバインドされ、前のコマンドの最後の引数を現在のコマンドラインに挿入します。
私は同様に動作するキーバインド/ショートカットを探しています Alt+.ただし、前のコマンドのすべての引数をコマンドラインに貼り付けます。
!*
と入力できることはわかっていますが、zshはそれを「前のコマンドのすべての引数を再利用する」と解釈します。しかし、これは私が探しているものではありません。また、実際に引数を貼り付けて表示できるようにするのではなく、zshは!*
をそのように解釈するだけです。私は打つことができた Tab 拡張する必要がありますが、それはさらに別のコマンドが必要です。
私はこれを次のような重要な組み合わせとして使用したいと思います Alt+something、「!*」と入力してタブを押す代わりに
これどうやってするの ?
前の履歴エントリの最初のWordを除くすべてを挿入するには、次のようなカスタムウィジェットを定義できます。
insert-last-words() {
emulate -L zsh
set -o extendedglob
if [[ $WIDGET = $LASTWIDGET ]]; then
# subsequent invocations go further back in history like
# insert-last-Word
zle undo # previous invocation
((INSERT_LAST_WORDS_INDEX += ${1--1}))
else
INSERT_LAST_WORDS_INDEX=0
fi
local lastwords
local cmd=${history:$INSERT_LAST_WORDS_INDEX:1}
lastwords=(${(z)cmd})
(($#lastwords > 1)) || return
cmd=${cmd##[[:space:]]#$lastwords[1][[:space:]]#}
LBUFFER+=$cmd
}
zle -N insert-last-words
bindkey '\e,' insert-last-words
(ここにバインドされています Alt+,)。