J'utilise avec bonheur zsh
depuis un certain temps maintenant, et je suis assez satisfait de mes paramètres d'historique, qui sont:
# 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
Mais il arrive souvent que je doive utiliser des commandes spécifiques dans certains répertoires spécifiques. Par exemple, quand je suis ~/my_project
dedans make target1 && ./run1
, j'invoque habituellement , mais quand je suis dedans , ~/second_project
j'ai généralement besoin make target2 && cat foobar | ./run2
.
C'est-à-dire: différents répertoires, mais des commandes similaires.
Donc, d'habitude, je cd ~/my_project
tape make
, puis je fais une recherche en arrière dans l'histoire jusqu'à ce que je trouve ce dont j'ai besoin. Mais s'il arrive que je travaille second_project
, lors de la recherche dans l'historique, je trouverai des commandes dont je n'ai pas besoin.
Donc, ma question: existe-t-il un plugin / paramètre / quelque chose pour zsh de telle sorte que, lors de la recherche dans l'historique, les commandes invoquées dans le répertoire courant s'affichent en premier?
Idéalement, toutes les autres commandes d'historique correspondant apparaîtront après celles-ci, en spécifiant éventuellement un nombre maximal d'éléments prioritaires.
J'essaierais d'écrire quelque chose comme ça par moi-même, mais je ne sais toujours pas comment écrire des plugins zsh personnalisés, comment gérer l'historique, etc.
la source
ctrl-g
(et non par priorité comme je l'ai demandé). Néanmoins, je le trouve toujours extrêmement utile et une bonne réponse à ma question, alors merci :)Je viens d'écrire un petit plugin qui fait une grande partie de ce que fait le plugin de Jim Hester, mais utilise une approche différente qui corrige de nombreux problèmes répertoriés dans le référentiel GitHub de ce plugin:
https://github.com/ericfreese/zsh-cwd-history
Il stocke un
HISTFILE
répertoire distinct pour chaque répertoire dans lequel vous avez exécuté des commandes et ajoute unchpwd
crochet pour basculer entreHISTFILE
s lorsque vous changez de répertoire.Il fournit également un widget zle que vous pouvez lier à une touche qui basculera
HISTFILE
entre votre "global" d'origineHISTFILE
et leHISTFILE
pour votre répertoire de travail actuel.Le plugin zsh-cwd-history ne le supporte pas actuellement, mais j'espère en ajouter bientôt.
la source
J'ai eu exactement le même problème et j'ai écrit un plugin ZSH qui le résout: https://github.com/tymm/zsh-directory-history
Vous n'avez pas à basculer manuellement entre l'historique global et l'historique des répertoires lorsque vous utilisez mon plugin.
Cela fonctionne également hors de la boîte avec mon plugin.
la source