Argumente aus dem vorherigen Befehl können in ZSH nicht abgerufen werden

Argumente aus dem vorherigen Befehl können in ZSH nicht abgerufen werden

Es gibt bekannte Abkürzungen, um Argumente des vorherigen Befehls in Bash abzurufen, wie Alt+.oder $!usw. Nichts davon funktioniert in meinem ZSH, ich verwende einige Zprezto-Module. Ich konnte nichts darüber finden, dass dies durch Zprezto-Module geändert wird. Kann es eine ZSH-Einstellung sein, die mir fehlt oder die ich möglicherweise festgelegt habe und die dieses Verhalten deaktiviert hat?

Antwort1

ALT.ist meines Wissens nicht allgemein bekannt. Ich gehe davon aus, dass dies durch etwas definiert wird, das Sie beim Start Ihrer Bash geladen haben. (Was tut es für Sie?)

$!ist die Prozess-ID des zuletzt gestarteten Kindprozesses. Ich nehme an, das istnichtwas du eingeben wolltest. :)

!$ist eine (verkürzte) Geschichtserweiterung, diesollenunter Standardbedingungen wird bis zum letzten Argument des vorherigen Befehls erweitert. Die Verlaufserweiterung von zsh ist sorgfältig dokumentiertim zsh-Handbuch.

Verlaufserweiterungen beginnen normalerweise mit !, aber es ist möglich, dies zu ändern, indem Sie den Wert von festlegen $HISTCHARS: Das erste Zeichen von $HISTCHARSwird als Zeichen verwendet, das eine Verlaufserweiterung einleitet. Standardmäßig $HISTCHARSist auf den Wert eingestellt !^#. Sie können den Wert auf Ihrem System mit folgendem überprüfen:

echo $HISTCHARS

Wenn dies nicht der Fall ist,nichtBeginnen Sie mit !, dann hat etwas in Ihrem Zsh-Start einen anderen Wert festgelegt und standardmäßige, bekannte Verlaufserweiterungen wie !!und !$werden bei Ihnen nicht funktionieren.

Aktualisieren:

Es stellt sich heraus, dass der erste Absatz, den ich oben geschrieben habe, völlig falsch ist. Ich kannte das vielleicht nicht ALT., aber das liegt vielleicht daran, dass ich zsh „immer“ mit aktiviertem vi-Modus verwendet habe. Tatsächlich sind ALT.(und ALT_, was dasselbe tut) in den standardmäßigen Emacs-Tastenkombinationen von zsh aktiviert. Sie sind an das ZLE-Widget gebunden insert-last-word, das das tut, was Sie beschreiben.

Wenn Sie zsh mit den Standard-Tastenkombinationen von Emacs verwenden und ALT.dies nicht funktioniert, wird dies durch etwas überschrieben, das Sie beim Start Ihrer Shell laden. Sie können die Standard-Tastenkombinationen wie folgt wiederherstellen:

bindkey -M emacs "^[." insert-last-word \
                 "^[_" insert-last-word

verwandte Informationen