Ich benutze es zsh
seit einiger Zeit gerne und bin sehr zufrieden mit meinen Verlaufseinstellungen:
# Write to history immediately
setopt inc_append_history
# History shared among terminals
setopt share_history
# Save extended info in history
setopt extended_history
# Ignore duplicates
setopt hist_ignoredups
Es kommt jedoch häufig vor, dass ich bestimmte Befehle in bestimmten Verzeichnissen verwenden muss. Wenn ich zum Beispiel ~/my_project
drin bin, rufe ich normalerweise an make target1 && ./run1
, aber wenn ich drin ~/second_project
bin, brauche ich normalerweise make target2 && cat foobar | ./run2
.
Das heißt: verschiedene Verzeichnisse, aber ähnliche Befehle.
Also tippe ich normalerweise cd ~/my_project
und tippe make
und suche dann rückwärts in der Geschichte, bis ich finde, was ich brauche. Aber wenn es passiert, dass ich gearbeitet habe second_project
, finde ich beim Durchsuchen des Verlaufs einige Befehle, die ich nicht benötige.
Meine Frage: Gibt es ein Plugin / einstellung / etwas für zsh, sodass bei der Suche im Verlauf zuerst die im aktuellen Verzeichnis aufgerufenen Befehle angezeigt werden?
Im Idealfall wird jeder zweite übereinstimmende Verlaufsbefehl nach diesen angezeigt, wobei optional eine maximale Anzahl von Prioritätselementen angegeben wird.
Ich würde versuchen, so etwas selbst zu schreiben, aber ich weiß immer noch nicht, wie man benutzerdefinierte zsh-Plugins schreibt, wie man mit Verlauf umgeht und so weiter.
quelle
ctrl-g
(und nicht nach Priorität, wie ich gefragt habe). Trotzdem finde ich es immer noch äußerst nützlich und eine gute Antwort auf meine Frage, also danke :)Ich habe gerade ein kleines Plugin geschrieben, das viel von dem macht, was Jim Hesters Plugin macht, aber einen anderen Ansatz verwendet, der viele der im GitHub-Repo dieses Plugins aufgeführten Probleme behebt:
https://github.com/ericfreese/zsh-cwd-history
Es speichert
HISTFILE
für jedes Verzeichnis, in dem Sie Befehle ausgeführt haben, ein separates Verzeichnis und fügt einenchpwd
Hook hinzu, mit demHISTFILE
Sie beim Wechseln der Verzeichnisse zwischen s wechseln können.Es bietet auch ein Zle-Widget, das Sie an einen Tastendruck binden können, der
HISTFILE
zwischen Ihrem ursprünglichen "globalen"HISTFILE
und demHISTFILE
für Ihr aktuelles Arbeitsverzeichnis umschaltet .Das zsh-cwd-history-Plugin unterstützt dies derzeit nicht, aber ich hoffe, bald Unterstützung dafür hinzufügen zu können.
quelle
Ich hatte genau das gleiche Problem und schrieb ein ZSH-Plugin, das es löst: https://github.com/tymm/zsh-directory-history
Sie müssen nicht manuell zwischen globalem Verzeichnis und Verzeichnisverlauf wechseln, wenn Sie mein Plugin verwenden.
Dies funktioniert auch sofort mit meinem Plugin.
quelle