Wie wiederhole ich aktuell eingegebene Parameter in zsh?

Wie wiederhole ich aktuell eingegebene Parameter in zsh?

Manchmal müssen wir bei der Verwendung nur einen leicht anderen Namen eingeben mv/cp/convert. Zum Beispiel:

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

Wie kann ich IMG-long-number.jpg wiederholen, bevor ich IMG-long-number.png eingebe, sodass ich nur kleine Anpassungen vornehmen muss?

Das ist ähnlich wieWie wiederhole ich aktuell eingegebene Parameter auf der Bash-Konsole?aber für zsh/zle.

Antwort1

!#$<Tab>funktioniert bei mir. Gegeben:

$ echo a

Wenn Sie eingeben !#$und dann drücken, Tabwird es zu erweitert !#$. aDie Tab-Vervollständigung listet auch andere Optionen auf, wenn Sie eine Operation mit versuchen ::

$ 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

Antwort2

Sie sollten folgende Alternative im Hinterkopf behalten: Das tun Sie nicht.

Nach der Verwendung der Vervollständigung zum Abrufen

Konvertiere IMG-lange-Nummer.jpg
editieren Sie das einfach in

IMG-Langzahl konvertieren.{jpg,png}

Antwort3

Ich würde das verwenden, Ctrl+Alt+_um das vorherige Wort ( copy-prev-wordWidget) zu kopieren. Nach dem Kopieren können Sie Backspacedie Erweiterung der Kopie bearbeiten.

Oder verwenden Sie Ctrl+W, um es als Ganzes zu löschen. Standardmäßig Ctrl+Wwerden ganze Wörter gelöscht (definiert als alnums+$WORDCHARS), aber Sie können das Verhalten bei Bedarf mit dem select-word-styleWidget ändern.

In ~/.zshrc:

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

Dann können Sie eine andereWortstilmit . Sie können hier den Wortstil (Wörter nur Alnums) Alt+Shift+Wverwenden (der Verweis bezieht sich darauf, wie Wort-WidgetsbashbashaußerCtrl+Wwie Alt+B, Alt+D... betrachtenWörter).

Antwort4

Ähnlich wie @muru vorgeschlagen hat - !#$<TAB>. Aber ich habe auch Bindungen wie diese in meiner .zshrc erstellt:

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

Auf diese Weise Escerledigt das Drücken von „und dann ein Komma“ dies für Sie, ähnlich wie das Drücken von „und Escdann ein Punkt“ Ihnen das letzte Argument des vorherigen Befehls liefert.

verwandte Informationen