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

402
Yuki

Es gibt bekannte Abkürzungen, um Argumente des vorherigen Befehls in bash zu erhalten, wie Alt+.oder $!, usw. Nichts davon funktioniert in meiner zsh, ich verwende einige zprezto-Module. Ich konnte nichts finden, was von zprezto-Modulen geändert wurde. Kann es eine ZSH-Einstellung sein, die ich vermisse oder die ich möglicherweise eingestellt habe und die dieses Verhalten deaktiviert hat?

1
Haben Sie versucht, mit einem leeren Zshrc zu beginnen und Plugins nacheinander zu aktivieren, um herauszufinden, wo sich der Täter befindet? slhck vor 6 Jahren 2

1 Antwort auf die Frage

0
wjv

ALT.ist meines Wissens nicht bekannt. Ich gehe davon aus, dass dies durch etwas definiert wird, das Sie in Ihrem Bash-Start geladen haben. (Was macht es für dich?)

$!ist die Prozess-ID des zuletzt gestarteten untergeordneten Prozesses. Ich nehme an, das ist nicht das, was Sie schreiben wollten. :)

!$ist eine (verkürzte) Historienerweiterung, die unter Standardbedingungen zum letzten Argument des vorherigen Befehls erweitert werden sollte. Die Historienerweiterung von zsh ist im zsh-Handbuch sorgfältig dokumentiert .

Historienerweiterungen beginnen normalerweise mit !. Sie können dies jedoch ändern, indem Sie den folgenden Wert festlegen $HISTCHARS: Das erste Zeichen von $HISTCHARSwird als Zeichen verwendet, das eine Historienerweiterung initiiert. Standardmäßig $HISTCHARSist ein Wert von festgelegt !^#. Sie können den Wert in Ihrem System überprüfen mit:

echo $HISTCHARS 

Wenn dies nicht mit anfängt !, hat etwas in Ihrem zsh-Startup einen anderen Wert festgelegt, und Standarderweiterungen mit bekannten Verlaufsverläufen mögen !!und !$werden für Sie nicht funktionieren.

Aktualisieren:

Es stellt sich heraus, dass der erste Absatz, den ich oben geschrieben habe, absolut falsch ist. Ich habe es vielleicht nicht gewusst ALT., aber das liegt möglicherweise daran, dass ich zsh immer mit aktiviertem vi-Modus verwendet habe. Tatsächlich sind ALT.(und das ALT_, was dasselbe bewirkt) in den Standard-Emacs-Keybindings von zsh aktiviert. Sie sind an das ZLE-Widget gebunden insert-last-word, das tut, was Sie beschreiben.

Wenn Sie zsh mit den Standard-Tastenkombinationen von emacs verwenden und ALT.nicht für Sie arbeiten, wird dies durch etwas überschrieben, das Sie beim Start der Shell laden. Sie können die Standard-Tastenkombinationen folgendermaßen wiederherstellen:

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