Terminal Ubuntu, comment puis-je «tabuler» (saisie semi-automatique) un nom de fichier de style fenêtre-cmd (options de cycle)?

13

Fondamentalement, je veux changer le terminal ubuntu de manière fonctionnelle, afin que je puisse parcourir toutes les options lorsque je tabule (sur la ligne de ligne cmd) et ne pas répertorier les options telles qu'elles sont par défaut?

J'utilise bash, ubuntu 9.04. Je vois quelques possibilités dans ".bashrc", mais il doit y avoir quelqu'un qui a déjà résolu ce problème?

Daniel T. Magnusson
la source
vous savez que si vous appuyez deux fois sur Tab, vous obtenez une liste de tous les compléments possibles, non?
vava
@vava: Vous décrivez la commande possible-complétions de bash, qui est généralement le comportement par défaut. La question est de savoir comment remplacer ce comportement par le comportement fourni par la commande menu-complete de bash.
las3rjock
@ las3rjock, je sais, c'est pourquoi j'ai laissé un commentaire, pas une réponse. Il est tout simplement possible que OP ne connaisse pas cette fonctionnalité car elle est bien meilleure que le mode cyclisme.
vava
@vava: l'OP décrit le comportement des achèvements possibles et indique qu'il souhaite le remplacer par le comportement de menu complet.
las3rjock
@vava, je sais comment fonctionne le terminal, et je veux changer ce comportement énervant.
Daniel T. Magnusson,

Réponses:

16

Selon les commentaires de cette page , mettre

bind '"\t":menu-complete'

dans votre .bashrcdevrait permettre l'achèvement cyclique de l'onglet.

Voir la section 8.4.6 du Manuel de référence Bash pour plus d'informations.

las3rjock
la source
Merci, très belle trouvaille! - J'adore le commentaire sur cette page "Il m'a fallu des années pour découvrir que bash prend en charge l'achèvement cyclique des onglets" - hah, le superutilisateur gagne!
Daniel T. Magnusson
Merci! Une fois cela implémenté, existe-t-il une combinaison de touches de remplacement pour utiliser momentanément l'ancienne méthode? Shift + TAB, par exemple.
Ace
0

Quelque chose qui est une bouée de sauvetage pour moi, c'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:

  1. Lorsque vous avez 3 fichiers: file1, file2et file3vous tapez:

    e fTabTabTab

    il va parcourir:

    e file1
    e file2
    e file3

    et quand vous voulez revenir en arrière, appuyez simplement sur Shift+Tab

  2. 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! ;-)

La source

Fabby
la source