TAB .inputrc ne se comporte pas comme prévu


11

Je suis sur une lancée aujourd'hui, voici une autre question:

Comment se fait-il que lorsque je les mets .inputrc, ils font tous les deux la même chose?

TAB: menu-complete
Shift-TAB: menu-complete-reverse

c'est à dire qu'ils font tous les deux ce que dit le dernier.

Réponses:


15

Readline ne sait rien d'un modificateur appelé Shiftet ignore discrètement les noms de modificateurs inconnus. Essayez wibble-TAB.

Pour lier une action à Shift+ Tab, vous devez savoir quelle séquence d'échappement votre terminal envoie. En bash, exécutez catet tapez Ctrl+ Vpuis Shift+ Tab. Cela insérera la séquence d'échappement littéralement. Il est probable que le premier caractère soit un caractère d'échappement, représenté par ^[; différents terminaux ont des séquences d'échappement différentes, mais les possibilités courantes sont ␛[Z(c'est-à-dire d'échappement, crochet gauche, Z majuscule) et ␛␉(c'est-à-dire d'échappement, tabulation). Liez la clé de manière appropriée ~/.inputrc(où \esignifie un caractère d'échappement).

"\e\t": menu-complete-backward
"\e[Z": menu-complete-backward

1
Ah, a ^[Ztravaillé pour moi (BASH); Merci pour la réponse détaillée! :)
user541686

Appuyez-vous sur Entrée avant ou après «chat»? Pourquoi «chat» est-il nécessaire? Il me semble obtenir les mêmes séquences d'échappement sans «chat».
dougkramer

@ douglas.kramer Running catévite toute liaison bash. Habituellement, bash a la même liaison Ctrl + V pour insérer littéralement le caractère suivant afin que cela ne fasse aucune différence.
Gilles 'SO- arrête d'être méchant'

J'ai du mal à faire en sorte que Shift + Tab soit lié à «shell-expand-command». J'obtiens: $ cat <Enter> <Shift+Tab>qui affiche ^[[Z Est-ce que j'ajoute toujours \eavant la séquence que j'obtiens Ctrl+V? Est-ce que cela se traduit par:"\e^[[Z": shell-expand-command
dougkramer

@dou Replace ^[by `\ e`
Gilles 'SO- arrête d'être méchant'

4

Sur Xubuntu 16.04, terminal: xfce4-terminal 0.6.3, shell: bash

Pour que Shift+ Tabfonctionne, j'ai dû utiliser:

bind '"\e[Z": menu-complete-backward'

En cours d' ~/.bash_profileutilisation: bind TAB:menu-completeet bind '"\e[Z": menu-complete-backward'(notez l'utilisation de guillemets simples et doubles!).
Erik
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.