web-dev-qa-db-fra.com

Comment modifier l'achèvement de l'historique de bash pour terminer ce qui est déjà en ligne?

J'ai trouvé une commande il y a quelques mois qui a fait que mon historique bash se complète automatiquement sur ce qui est déjà en ligne en appuyant sur la flèche vers le haut:

$ vim fi

Presse 

$ vim file.py

Je voudrais configurer cela sur mon nouvel ordinateur, car cela permet d'économiser beaucoup de temps lors de la conservation d'une grande histoire. Le problème est que je ne peux pas me souvenir de l'endroit où il a été mentionné et lire des références et des tutoriels bash sans fin n'a malheureusement pas aidé non plus.

Quelqu'un connaît-il la commande?

129
blokkie

Probablement quelque chose comme

 # ~/.inputrc 
 "\ e [A": historique-recherche-en arrière 
 "\ e [B": historique-recherche-en avant 

ou équivalent,

 # ~/.bashrc 
 si [[$ - == * i *]] 
 puis 
 lier '"\ e [A": recherche historique -backward '
 bind' "\ e [B": history-search-forward '
 fi 

(l'instruction if vérifie le mode interactif)

Normalement, Up et Down sont liés aux fonctions Readline previous-history et next-history respectivement. Je préfère lier PgUp/PgDn à ces fonctions, au lieu de déplacer le fonctionnement normal de Up/Down.

 # ~/.inputrc 
 "\ e [5 ~": historique-recherche en arrière 
 "\ e [6 ~": historique-recherche-en avant 

Après avoir modifié ~/.inputrc, redémarrez votre Shell ou utilisez Ctrl+XCtrl+R pour lui dire de relire ~/.inputrc.


Soit dit en passant, si vous recherchez une documentation pertinente:

Bash utilise The GNU Readline Library pour l'invite du shell et l'historique.

218
ephemient

Mettez à jour .inputrc avec les éléments suivants:

"\C-[OA": history-search-backward
"\C-[[A": history-search-backward

"\C-[OB": history-search-forward
"\C-[[B": history-search-forward
4
nate_weldon

Si set enable-keypad on est dans votre ~/.inputrc comme certains utilisateurs de st ( terminal simple sans succion ), sachez que les touches fléchées sont en mode clavier. Ubuntu est fourni avec cette /usr/share/doc/bash/inputrc.arrows:

# This file controls the behaviour of line input editing for
# programs that use the Gnu Readline library.
#
# Arrow keys in keypad mode
#
"\C-[OD"        backward-char
"\C-[OC"        forward-char
"\C-[OA"        previous-history
"\C-[OB"        next-history
#
# Arrow keys in ANSI mode
#
"\C-[[D"        backward-char
"\C-[[C"        forward-char
"\C-[[A"        previous-history
"\C-[[B"        next-history
#
# Arrow keys in 8 bit keypad mode
#
"\C-M-OD"       backward-char
"\C-M-OC"       forward-char
"\C-M-OA"       previous-history
"\C-M-OB"       next-history
#
# Arrow keys in 8 bit ANSI mode
#
"\C-M-[D"       backward-char
"\C-M-[C"       forward-char
"\C-M-[A"       previous-history
"\C-M-[B"       next-history

Je ne sais donc pas si vous aurez besoin de tout, mais cela pourrait ne pas faire de mal d'avoir dans votre ~/.inputrc:

# Arrow keys in keypad mode
"\C-[OA": history-search-backward
"\C-[OB": history-search-forward
"\C-[OC": forward-char
"\C-[OD": backward-char

# Arrow keys in ANSI mode
"\C-[[A": history-search-backward
"\C-[[B": history-search-forward
"\C-[[C": forward-char
"\C-[[D": backward-char

C'est aussi sur le même sujet: Mes touches de curseur ne fonctionnent pas et aussi ceci xterm: touches spéciales

1
Mauricio Robayo

Avec ohmyzsh, utilisez ceci dans votre . Zshrc :

bindkey '^[OA' history-search-backward
bindkey '^[OB' history-search-forward

Pour recharger, source ~/.zshrc ou relancez le terminal.

Source: https://superuser.com/a/418299/7168

1
Benjamin Crouzier