Comment rendre la saisie semi-automatique du terminal lorsqu'il y a plusieurs fichiers / répertoires?
32
Si j'ai plusieurs répertoires, comme:
afoo abar
Parfois, mon terminal refuse la saisie semi-automatique lorsque j'appuie sur tab (par exemple "cd a" puis tab), et imprime la liste des répertoires à la place. Parfois, il émet même un son bruyant et ennuyeux. Avez-vous une idée de la façon de le compléter dans des cas comme celui-ci? Par exemple, il peut afficher d'abord abar, puis afoo si j'appuie de nouveau sur tab. J'ai vu que c'était le cas dans Windows, ou une applciation dans Ubuntu
Quelque chose qui est une bouée de sauvetage pour moi est d'avoir bash cycle à travers les possibilités au lieu d'afficher une liste stupide.
Comme bash utilise readlinepour son auto-complétion, ajoutez les lignes suivantes à~/.inputrc
Une fois que vous êtes satisfait et que vous avez soigneusement testé ci - dessous solution pour quelques jours / semaines, couper et coller (ne pas copier!) Les mêmes paramètres de ~/.inputrcà /etc/inputrcqui contient les paramètres du système à l' échelle, mise à disposition de tous les utilisateurs sur votre système (y compris l'invité).
Le codez:
# mappings to have up and down arrow searching through history:"\e[A": history-search-backward
"\e[B": history-search-forward
# mappings to have left and right arrow go left and right: "\e[C": forward-char
"\e[D": backward-char
# mapping to have [Tab] and [Shift]+[Tab] to cycle through all the possible completions:"\t": menu-complete
"\e[Z": menu-complete-backward
puis exitvotre terminal (ou terminal distant comme du mastic) et rouvrez-le ...
Exemples:
Lorsque vous avez 3 fichiers: file1, file2et file3vous tapez:
e fTabTabTab
il va parcourir:
e file1
e file2
e file3
et quand vous voulez faire un cycle vers l'arrière, appuyez simplement sur Shift+Tab
Lorsque vous tapez:
very-complicated-command with lots of command line parameters
et la prochaine fois que vous aurez besoin de la même commande, vous tapez simplement:
very↑
et ça va taper pour vous:
very-complicated-command with lots of command line parameters
Cela vous fera économiser une tonne de temps en bash! ;-)
C'est assez sympa, merci (et j'ai mon vote positif). Existe-t-il un moyen universel de montrer les options qu'il traversera, qui combine le meilleur des deux mondes? J'aime la possibilité de tabulation + tabulation avec des dossiers et des sous - commandes, etc. donc je n'ai pas à me souvenir de tous (par exemple git branch <tab through branches>. Cependant, si je pouvais voir une liste et un onglet à travers ses éléments, ce serait génial! Pour les répertoires et les fichiers lsest une option pour voir quels éléments sont disponibles. Cependant, pour les sous-commandes, ce n'est pas si facile ou évident, malheureusement.
Erik
Cela fonctionne également sur PuTTy! Je
n'ai
@Erik: Apparemment, ce que vous avez demandé est possible mais ne va pas modifier ma réponse pour simplifier les choses ici. (ancien commentaire supprimé que ce n'est pas possible)
Fabby
18
Après le 1er, tabvous devez insérer plus de lettres. Donc, si vous tapez
cd a
et appuyez sur tabvous n'obtenez rien et après une seconde tab(immédiatement après), vous obtenez une liste des noms commençant par a, puis vous devez insérer un fpour qu'il complète automatiquement le reste afin
À mon humble avis, c'est la bonne façon. Personnellement, je trouve le comportement de Windows très ennuyeux. Considérez le cas où vous avez beaucoup de fichiers commençant par aet dont vous avez besoin du dernier. Lorsque vous appuyez accidentellement sur tab après aavoir parcouru la liste de toutes les finitions possibles pour arriver à la bonne.
Tobias
@Tobias: lorsque vous appuyez accidentellement sur [Tab] trop tôt en utilisant l'autre système , il y a toujours [Ctrl] [K] ... ;-)
~/.inputrc
pourrait être préférable à/etc/inputrc
, et 2. Je pense que vous pouvez le définirbash
directement: unix.stackexchange.com/q/55203/70524 , unix.stackexchange.com/a/16926/70524git branch <tab through branches>
. Cependant, si je pouvais voir une liste et un onglet à travers ses éléments, ce serait génial! Pour les répertoires et les fichiersls
est une option pour voir quels éléments sont disponibles. Cependant, pour les sous-commandes, ce n'est pas si facile ou évident, malheureusement.Après le 1er, tabvous devez insérer plus de lettres. Donc, si vous tapez
et appuyez sur tabvous n'obtenez rien et après une seconde tab(immédiatement après), vous obtenez une liste des noms commençant par
a
, puis vous devez insérer unf
pour qu'il complète automatiquement le reste afincd a
tabtabf
tabtabaura pour résultat
la source
a
et dont vous avez besoin du dernier. Lorsque vous appuyez accidentellement sur tab aprèsa
avoir parcouru la liste de toutes les finitions possibles pour arriver à la bonne.