2012-12-26 5 views
32

Ich wurde gesagt, dass in ZSH Sie etwas wie command tun könnten, und dann, wenn Sie treffen, würde es die Geschichte filtern, die auf dem gegebenen Befehl basiert. Aber wenn ich das versuche, dreht es einfach die Geschichte wie Bash. Ist das standardmäßig deaktiviert?Filterung ZSH Geschichte durch Befehl

Antwort

50

Drücken Sie Ctrl+R, geben Sie einige Buchstaben ein, es wird den vorherigen Befehl mit diesen Buchstaben finden, halten Sie Strg + R gedrückt, um die vorherigen Ergebnisse fortzusetzen.
Works in Bash, Zsh (und andere Shells nehme ich an).

Was ich persönlich gerne hätte ist: Tippen Sie einige Buchstaben, drücken Sie Up, die vorherigen Befehle beginnend mit den gleichen Buchstaben erscheinen. Sehr stark, ich liebe es.
Sie müssen die gewünschten Schlüssel an history-beginning-search-backward und history-beginning-search-forward binden.

Für den Fall, dass es nicht genug für Sie ist, hat zsh eine Menge Optionen, versuchen Sie, in Zsh Line Editor zu suchen und sagen Sie uns.
Für Bash, weniger stark, aber häufiger, Bash commands for history.

+0

Einfach perfekt, danke. – Guu

+1

Siehe meine Antwort für etwas, das dem ähnelt, was Sie in Ihrem zweiten Absatz beschrieben haben. Es wird eine vollständige Teilstringsuche durchgeführt, so dass es mit jedem Teil eines Befehls übereinstimmt, aber es sollte ziemlich einfach zu ändern sein, damit es nur vom Anfang der Befehle an übereinstimmt. – Frost

+12

'STRG + R' wird nicht funktionieren, wenn Sie Vim-Bindungen in zsh verwenden. Falls ja, versuche, 'bindkey '^ R" history-incremental-search-backward "zu deiner ~/.zshrc-Datei hinzuzufügen. – croceldon

4

Das ist eine Funktion in fish, aber es scheint, als ob jemand eine zsh plugin dafür gemacht. Es ist nicht im Standard ZSH verfügbar.

7

Verwenden Ausrufezeichen:

> !<starts-with this string> 

Sie können nach oben/unten durch alle Befehle Pfeil, mit dem gestartet. Ich verwende "! V" die ganze Zeit, um meinen vorherigen Befehl zum Öffnen einer Datei mit Vim zu erhalten.

Sie können auch ein Fragezeichen verwenden darüber hinaus passend zum Anfang der Zeichenfolge zu suchen,

> !?status 

Kann „git status“ finden.

+3

Das funktioniert nicht für mich. Ich tippe! Vi und drücke Auf und ich sehe den vorherigen Befehl, nicht den vorherigen Befehl, der mit "vi" beginnt. Gibt es eine Einstellung, die ich aktivieren muss, damit dies funktioniert? –

+0

@LarryHastings, drücken Sie zuerst die Eingabetaste. Dann können Sie auf "Auf" drücken, um durch den Befehlsverlauf zu gehen. –

+1

Wo ist diese Syntax dokumentiert? – bennlich

1

Verwenden percol dynamisch suchen und mit Ctrl durch Ihre Geschichte navigieren - r.

  • installieren Percol: sudo pip install percol
  • fügen Sie den zsh-history-search Code-Schnipsel zu Ihrem .zshrc Datei.

Nach einem Ctrl - r, können Sie Ihre ganze Geschichte im selben Fenster sehen. Die Suche nach einem Schlüsselwort (dynamisch) verengt diese Liste. Sie können Tastaturbelegungen (wie diese Konfiguration) verwenden, um die Liste auf und ab zu navigieren und schließlich eine Auswahl zu treffen.

Hier finden Sie alle sudo install Befehle, die in der Historie unter sudo make install ausgewählt sind.

percol_history_search_example

Fragen der ausgewählte Befehl eingeben.

2

Mit den in zsh aktivierten vim keybindings können Sie vi-history-search-backward (/) im vi-Befehlsmodus verwenden.

Verwandte Themen