web-dev-qa-db-ja.com

zshで現在入力されているパラメータを繰り返す方法は?

mv/cp/convertを使用するときに、わずかに異なる名前を入力する必要がある場合があります。例えば、

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

IMG-long-number.pngを入力する前にIMG-long-number.jpgを繰り返すにはどうすればよいので、少し調整するだけで済みますか?

これは bashコンソールで現在入力されているパラメーターを繰り返す方法は? に似ていますが、zsh/zleの場合です。

3
xuhdev

!#$<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
3
muru

覚えておくべき代替案は次のとおりです。

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

iMG-long-number.jpgを変換します
iMG-long-numberを変換します。{jpg、png}
3
JdeBP

私は使用します Ctrl+Alt+_ 前のWord(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 Wordスタイル(単語のみのalnum)を使用できます(参照は、bash Wordウィジェット以外 Ctrl+Wいいね Alt+B、 Alt+D...検討してください単語)。

2

Zshでviモードを使用する場合は、最初の数字を書き込んでから、ESCByt.を書き込んでドットまでコピーできます。最後に、ASPCを最後に移動してスペースを挿入し、ESCPi.pngを貼り付けてpng拡張子を入力します。

1
gabesoft

@muruが提案したものと同様-!#$<TAB>。しかし、私は.zshrcでこのようなバインディングも作成しました:

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

そうすれば、Escを押してからカンマを押すと、Escを押してからドットが前のコマンドの最後の引数を取得するのと同じように、それが行われます。

0
Alex J.