Ersetzen Sie das Argument N im vorherigen Befehl

384
Palpatim

Ich bin vor kurzem zu ZSH gewandert, und ich möchte ein bisschen effizienter werden, um Argumente in Befehlen zu ersetzen. Im Besonderen möchte ich das Argument "N" beim letzten Aufruf des Befehls "cmd" ersetzen. Ich möchte nicht wissen, was das vorherige Argumentmuster war, ich möchte nur, dass das gesamte Argument ersetzt wird.

Angenommen, ich habe diesen Befehl irgendwo in meiner Geschichte.

foo arg-1 arg-2 arg-3 

Und ich möchte das erste Positionsargument bei meinem nächsten Aufruf durch "arg-replace" ersetzen. zshexpnIch schaute durch und dachte, ich könnte so etwas tun:

!foo:1:s/.*/arg-replaced/ [TAB] 

Mit den erwarteten Ergebnissen:

foo arg-replaced arg-2 arg-3 

Dies führt jedoch zu einem Fehler "zsh: Substitution fehlgeschlagen".

Ich habe mir die Frage angesehen " Wie ersetze ich ein bestimmtes Argument eines vorherigen Befehls in zsh? " Und es scheint fast das zu sein, was ich will, mit der Ausnahme, dass es nur den vorherigen Befehl ersetzt, anstatt die Historie nach meinem Befehlsmuster zu durchsuchen. Ich denke, dies sollte von der standardmäßigen Zsh-Erweiterung unterstützt werden, aber ich bin verdammt, wenn ich herausfinden kann, wie ich das erreichen kann.

2

0 Antworten auf die Frage