Wiederholen Sie den letzten Befehl und suchen Sie nach "zwei Wörtern" zsh

1

Ich möchte den letzten passenden Befehl wiederholen foo bar. Verwenden !! funktioniert nicht (es ist nicht der letzte Befehl, den ich verwendet habe) und auch nicht !foo, weil meine Geschichte ungefähr so ​​aussieht

foo bar dee zep
foo boo lee kee
foo bee

Wenn ich versuche zu tippen !foo bar, zsh Auto-Vervollständigung zu foo bee (das ist das gleiche wie !! sowieso) als ich den raum betrat. Wie würde ich das machen?

simont
quelle

Antworten:

2
!?foo bar

Sehen http://zsh.sourceforge.net/Doc/Release/Expansion.html#Event-Designators

Bearbeiten : Nein, du darfst den Räumen nicht entkommen. Wenn Sie etwas hinzufügen müssen, das nicht Teil der Verlaufserweiterung ist, trennen Sie es durch ein anderes ?, z.B.:

echo hello
echo foo
!?echo hello? world # runs "echo hello world"
WakiMiko
quelle
Müssen Sie den Räumen entkommen?
rubixibuc
Vielleicht kann ich das nicht, weil ich benutze oh-my-zsh; Ich kann nicht tippen !?foo bar, da als ich das traf ' ' Leertaste , zsh wird automatisch vervollständigt foo bee; Ich verliere den Ereigniskennzeichner von der Eingabeaufforderung und weiter ? hilf mir nicht zu ersetzen bee mit bar.
simont
Da ist ein Bindkey drin oh-my-zshunter lib/keybindings.zsh, namens magic-space (Linie 23, ungefähr). Es geht um die Erweiterung der Geschichte ' '; Durch Deaktivieren dieser Bindung konnte ich die !? Ereignisbezeichner. Vielen Dank :)
simont
0

Bessere Antwort:

!{?foo bar?}

Ich finde die geschweiften Klammern hilfreich, wenn es darum geht, die Erweiterung der Geschichte mit Magic-Space zu verzögern, obwohl sie dokumentiert sind als:

Isolieren Sie einen Verlaufsverweis von benachbarten Zeichen (falls erforderlich).

auf der Seite:

http://zsh.sourceforge.net/Doc/Release/Expansion.html#History-Expansion

Hinweis: In einigen Fällen kann es viel schneller sein, das zu verwenden n Die Syntax des vorherigen Verlaufselements lautet wie folgt:

!-2

für den 2. befehl zurück, !-1 ist das gleiche wie !!

Mike
quelle