C'est surtout une note amusante sur bash
et readline
, mais si vous définissez votre EDITOR
variable d'environnement sur vim
, appuyer sur Ctrl+ x+ eouvrira la ligne actuelle vim
. De plus, si vous tapez Meta(Alt/Opt/Esc)+ Ctrl+ e, bash effectuera une expansion sur place sur la ligne de commande actuelle, c'est-à-dire:
$ echo $EDITOR # Assuming EDITOR was set
avec Meta(Alt/Opt/Esc)+ Ctrl+ edeviendrait
$ echo vim # Assuming EDITOR was set
avec Ctrl+ x+ edeviendrait
1 echo vim # Assuming EDITOR was set
~
~
/tmp/sometmpbufferfile
Notez qu'à la fermeture de vim, le contenu du tampon vim est exécuté sur la ligne de commande.
Ces fonctionnalités deviennent très utiles pour moi lorsque je souhaite exécuter des commandes multi-lignes en bash, comme pour les boucles ou les programmes nécessitant des instructions ici, et fournissent un moyen intéressant de sauvegarder un peu de l'historique de la ligne de commande dans un fichier pour une utilisation ultérieure.
Donc, pour répondre à la question d'origine, vous pouvez également écrire,
$ This is an example
puis appuyez sur Ctrl+ x+ epour le charger vim
. Vous pourriez aussi avoir,
$ $(cat /etc/hosts)
et faites Meta(Alt/Opt/Esc)+ Ctrl+ epuis Ctrl+ x+ e, ce qui mettrait tous les fichiers d'hôtes sur une seule ligne et le chargerait vim
(probablement pas la meilleure utilisation de ces fonctionnalités - cependant, l'utilité de ces méthodes peut être extrapolée à partir des quelques exemples discutés ici).
Notez que je suppose que votre readline
est réglé sur emacs
mode. Si votre readline
est défini sur vim
mode, vous pouvez facilement découvrir les liaisons pertinentes en utilisant la commande:
bind -p
et la recherche de edit-and-execute-command
ou shell-expand-line
, qui étaient respectivement associées aux liaisons Ctrl+ x+ eet Meta(Alt/Opt/Esc)+ Ctrl+ e.
:help stdin
... C'est incroyable à quelle vitesse on peut trouver les réponses en posant leur question sur la documentation intégrée.