• [^] # Re: Readline

    Posté par . En réponse au journal Bash et les raccourcis clavier. Évalué à 5.

    En effet, voici par exemple mon fichier ~/.inputrc

    $include /etc/inputrc 
    $if mode=emacs 
    "\e[1;3C": end-of-line 
    "\e[1;3D": beginning-of-line 
    "\e[1;5P" dump-functions 
    $endif 
    $if Bash 
     # Quote the current or previous word 
     "\C-xq": "\eb\"\ef\""
    $endif
    

    Les 2 premières commandes me permettent d'utiliser A-Left et A-Right pour me déplacer en début et fin de ligne (équivalent à C-a et C-e)

    La troisième commande permet d'utiliser C-F1 pour afficher toutes les fonctions de readline avec leur raccourcis clavier. Sur mon terminal, "\e[1;5P" correspond à C-F1 mais cela peut varier (voir ci dessous) En pratique, ce raccourci est équivalent à la commande bash bind -P sauf que C-F1 peut être utilisé sans casser la commande en cours d'écriture.

    La quatrième commande est en fait une macro qui transforme C-x q en A-b (backward-word) " A-e (forward-word) " . En pratique cela transforme le mot actuel en "chaîne"

    Pour trouver la séquence correspondant à une combinaison de touches j'utilise généralement la commande cat sans arguments.

    (bash) cat
    ^[[1;3Q^[[1;3R^C
    

    Dans cet exemple, j'ai utilisé les raccourcis A-F2, A-F3 et finalement C-c pour quitter cat.

    ^[ est le caractère d’échappement qui doit devenir \e dans votre .inputrc

    Par exemple, je pourrais associer A-F2 à la macro "Salut" dans mon .inputrc

     "\e[1;3Q": "Salut"
    

    ou alors depuis un prompt bash avec la commande bind:

    (bash) bind '"\e[1;3Q": "Salut"'
    

    Il est aussi possible d'associer des commandes bash à des raccourcis clavier. Par exemple pour que C-x l transforme la ligne en cours d'édition en minuscules il suffit d'ajouter les lignes suivantes à votre .bashrc:

    lowercase-line () {
     READLINE_LINE="$(echo -n "$READLINE_LINE" | tr A-Z a-z)" ; 
    }
    bind -x '"\C-xl": lowercase-line'