zsh で現在入力されているパラメータを繰り返すにはどうすればいいですか?

zsh で現在入力されているパラメータを繰り返すにはどうすればいいですか?

を使用するときに、少しだけ異なる名前を入力する必要がある場合もありますmv/cp/convert。たとえば、

convert IMG-long-number.jpg  IMG-long-number.png

IMG-long-number.png を入力する前に IMG-long-number.jpg を繰り返して、小さな調整のみを行うにはどうすればよいですか?

これはbash コンソールで現在入力されているパラメータを繰り返すにはどうすればいいですか?ただし、zsh/zle の場合です。

答え1

!#$<Tab>私にとってはうまくいきます。与えられた条件:

$ echo a

!#$と入力して を押すとにTab展開されます。を使用した操作を試みると、タブ補完では他のオプションも表示されます。!#$a:

$ echo a !#$:
&  -- repeat substitution
A  -- absolute path resolving symbolic links
Q  -- strip quotes
a  -- absolute path
c  -- PATH search for command
e  -- leave only extension
g  -- globally apply s or &
h  -- head - strip trailing path element
l  -- lower case all words
q  -- quote to escape further substitutions
r  -- root - strip suffix
s  -- substitute string
t  -- tail - strip directories
u  -- upper case all words

答え2

心に留めておくべきもう一つのことは、そうする必要はないということです。

補完を使用して取得した後

IMG-long-number.jpg を変換する
それを単純に編集して

IMG-long-number.{jpg,png} を変換します。

答え3

Ctrl+Alt+_前の単語 (ウィジェット) をコピーして使用します。コピーしたら、コピーの拡張子を編集するためにcopy-prev-word使用できます。Backspace

または、 を使ってCtrl+W単語全体を削除します。デフォルトでは、Ctrl+W単語全体(alnums+$WORDCHARS として定義)が削除されますが、ウィジェットを使用して必要に応じて動作を変更できますselect-word-style

~/.zshrc

autoload select-word-style
zle -N select-word-style
bindkey '\eW' select-word-style

次に、別の単語スタイルAlt+Shift+W。ここでは単語スタイル(単語のみの数字)を使用できますbash(参照はbash単語ウィジェットの以外Ctrl+WたとえばAlt+BAlt+D... 考慮する言葉)。

答え4

@muru が提案したものと似ています - !#$<TAB>。ただし、 .zshrc で次のようなバインディングも作成しました:

bindkey -s "^[," "!#\$^I"

そうすれば、次にコンマを押すと、ドットを押すと前のコマンドの最後の引数が取得されるEscのと同じように、自動的に実行されます。Esc

関連情報