Vous pouvez déterminer la séquence de caractères émise par une touche en appuyant sur Ctrl- vsur la ligne de commande, puis en appuyant sur la touche qui vous intéresse. Sur mon système pour F12, je reçois ^[[24~
. Le ^[
représente Esc. Différents types de terminaux ou d'émulateurs de terminaux peuvent émettre des codes différents pour la même clé.
À une invite Bash, vous pouvez entrer une commande comme celle-ci pour activer la macro clé afin que vous puissiez l'essayer.
bind '"\e[24~":"foobar"'
Maintenant, lorsque vous appuyez sur F12, vous obtenez "foobar" sur la ligne de commande prêt pour une édition ultérieure. Si vous souhaitez qu'une touche pour saisir une commande immédiatement, vous pouvez ajouter une nouvelle ligne:
bind '"\e[24~":"pwd\n"'
Maintenant, lorsque vous appuyez sur F12, vous obtenez le répertoire actuel affiché sans avoir à appuyer sur Enter. Que faire si vous avez déjà tapé quelque chose sur la ligne et que vous utilisez ce qui s'exécute automatiquement? Cela pourrait devenir compliqué. Cependant, vous pouvez effacer la ligne dans le cadre de votre macro:
bind '"\e[24~":"\C-k \C-upwd\n"'
L'espace permet de s'assurer que le Ctrl- ua quelque chose à supprimer pour empêcher la cloche de sonner.
Une fois que vous avez fait fonctionner la macro comme vous le souhaitez, vous pouvez la rendre persistante en l'ajoutant à votre ~/.inputrc
fichier. Il n'y a pas besoin de la bind
commande ou de l'ensemble extérieur de guillemets simples:
"\e[24~":"\C-k \C-upwd\n"
Éditer:
Vous pouvez également créer une liaison de clé qui exécutera quelque chose sans perturber la ligne de commande actuelle.
bind -x '"\eW":"who"'
Ensuite, pendant que vous tapez une commande qui nécessite un nom d'utilisateur, par exemple, et que vous avez besoin de connaître les noms des utilisateurs qui sont connectés, vous pouvez appuyer sur Alt- Shift- Wet la sortie de who
sera affichée et l'invite sera réémise avec votre commande partielle intacte et le curseur à la même position dans la ligne.
Malheureusement, cela ne fonctionne pas correctement pour les clés telles que celles F12qui produisent plus de deux caractères. Dans certains cas, cela peut être contourné.
La commande ( who
dans ce cas) peut être n'importe quel exécutable - un programme, un script ou une fonction.