Copiez et collez ceci sur votre .zshrc
:
Les curseurs utilisent l'histoire locale:
bindkey "${key[Up]}" up-line-or-local-history
bindkey "${key[Down]}" down-line-or-local-history
up-line-or-local-history() {
zle set-local-history 1
zle up-line-or-history
zle set-local-history 0
}
zle -N up-line-or-local-history
down-line-or-local-history() {
zle set-local-history 1
zle down-line-or-history
zle set-local-history 0
}
zle -N down-line-or-local-history
Si vous avez également besoin de raccourcis clavier ( CTRL+ curseurs) pour parcourir l'historique global, ajoutez-le également à votre .zshrc
:
bindkey "^[[1;5A" up-line-or-history # [CTRL] + Cursor up
bindkey "^[[1;5B" down-line-or-history # [CTRL] + Cursor down
Pour que cela fonctionne, l'option SHARE_HISTORY (voir 16.2.4 Historique ) doit être activée. Exécutez setopt
et vérifiez si "sharehistory" est répertorié. Si ce n'est pas ajouter setopt sharehistory
à votre .zshrc
. Ensuite, on peut utiliser set-local-history comme nous l'avons fait ci-dessus. La documentation dit:
Par défaut, les commandes de déplacement d'historique visitent les lignes importées ainsi que les lignes locales, mais vous pouvez les activer et les désactiver avec la liaison zle set-local-history. Il est également possible de créer un widget zle qui fera en sorte que certaines commandes ignorent les commandes importées, et certaines les incluent.
Notez que par défaut, l'historique global est utilisé (et toutes les fonctions se terminent par "zle set-local-history 0", c'est-à-dire que l'historique local est désactivé). Donc, appuyer sur CTRL+ Rrecherchera l'historique global par défaut (ce qui est logique dans la plupart des cas).
Ceci est assez similaire à la solution de @mpy, mais prêt pour le copier-coller. Il écrase les touches du curseur de haut en bas. J'ai utilisé cette entrée de liste de diffusion .
Voir également:
${key[Up]}
. Ensuite (en mode édition), tapez Ctrl + V suivi de la flèche vers le haut. Cela devrait insérer le code clé correct. Faites de même pour la flèche vers le bas.Ctrl+R
.Vous pouvez configurer un widget zle spécial pour afficher uniquement les éléments de l'historique local:
En supposant que cela ↑soit lié à
up-line-or-history
(je pense que c'est par défaut), vous pouvez lier ce widget à un autre coup de clé, comme CTRL+ ↑:Si cela fonctionne, cela dépend probablement de votre terminal. La ligne ci-dessus fonctionne
URxvt/Screen
. Avecxterm
vous aurez besoinpour CTRL+ ↑.
Une autre variante pourrait être
ainsi, si vous avez activé l'historique local, vous pouvez jeter un œil à l'historique global ou vice versa.
la source
La réponse de @ lumbic n'a fonctionné pour moi qu'avec quelques modifications:
Ce code définit l'historique global par défaut et utilise la flèche CTRL pour l'historique local.
Remarque: j'utilise zsh 5.0.2 avec oh-my-zsh.
la source
Ctrl+arrows
pour l'histoire locale.J'ai essayé les options énumérées dans d'autres réponses ici, mais je n'étais pas satisfait avec elles. Les widgets 1
up-history
ouup-line-or-history
n'incluent pas le début de la recherche et le widget 1up-line-or-beginning-search
semble ne pas fonctionner correctement lors de la modification des préférences d'historique local lors de son utilisation. 2Je suis donc arrivé aux paramètres suivants. Il permet Ctrl+ les flèches pour parcourir l'historique global, Alt+ les flèches pour parcourir uniquement l'historique local (similaire à Bash) et les flèches autonomes pour utiliser la recherche de début intelligente (par défaut dans Oh My Zsh ).
1 Leurs
down
homologues sont également implicites.2 Le début utilisé pour la recherche est redéfini après avoir modifié les préférences d'historique local, de sorte que toute la première commande trouvée est utilisée comme début à rechercher dans la deuxième recherche.
la source
Sur la base des différentes réponses ici, j'ai pu faire une version condensée:
Cette version remplacera les widgets existants
up-line-or-history
et lesdown-line-or-history
nouveaux widgets définis par l'utilisateur. Ce widget active l'historique local et appellera ensuite les widgets d' origine , qui sont disponibles sous les.
noms préfixés. Voir la documentation du widget zle pour plus de détails.Cela signifie que vous pouvez conserver les raccourcis clavier existants. Vous pouvez donc éviter d'avoir à comprendre quelle est la séquence d'échappement pour taper une flèche vers le haut dans votre terminal actuel.
la source
La réponse ci-dessus a fonctionné pour moi.
Référence: https://coderwall.com/p/jpj_6q/zsh-better-history-searching-with-arrow-keys
la source