122 votes

Une invite bash différente pour un mode d'édition vi différent ?

Lorsque l'on utilise le mode vi (set -o vi) avec Bash, il serait bien d'avoir une invite qui dépend du mode dans lequel on se trouve (insertion ou commande). Comment peut-on connaître ce mode d'édition ?

B.t.w, cela semble être possible en ZSH :

72voto

eMPee584 Points 495

Fresh bash 4.3 et readline 6.3 ont quelque chose pour vous d'après le changelog :

4.  New Features in Readline
j.  New user-settable variable, show-mode-in-prompt, adds a characters to the
    beginning of the prompt indicating the current editing mode.

Donc, en mettant

set show-mode-in-prompt on

dans /etc/inputrc ou ~/.inputrc (thx stooj) devrait affecter tous vos programmes compatibles avec la lecture en ligne ;)

19voto

Jeremy Heslop Points 458

Après avoir cherché sur Google, dans la page de manuel de bash et dans le code source de bash (lib/readline/vi_mode.c), il semble qu'il n'y ait pas de moyen simple de modifier l'invite lorsqu'on passe du mode insertion au mode commande. Il semble qu'il y ait une opportunité pour quelqu'un de patcher le code source de bash car il y a des appels pour démarrer et arrêter les modes dans le code source.

En voyant votre post, j'ai été intéressé par le réglage du mode vi de bash. J'aime vi et pourquoi pas sur la ligne de commande. Cependant, il semble que nous devrons garder la trace de si nous sommes en mode insertion sans un changement d'invite (so sayeth beaucoup de messages de forum) Pour ce que cela vaut, vous êtes toujours en mode insertion à moins que vous appuyez sur ESC. Cela rend les choses un peu plus faciles, mais pas toujours aussi intuitives.

J'augmente votre question car je suis intéressé de voir où cela va aller.

0voto

Andrew_1510 Points 2028

J'essaie d'obtenir un indicateur pour le mode vi de BASH également, et vous avez tous appris que c'est simple et qu'il n'y a pas encore de moyen de le faire.

Mon approche actuelle est la suivante : appuyer sur 'a' lorsque je ne suis pas sûr du mode. Si 'a' apparaît après BASH PROMOT, je sais que je suis en mode 'INSERT'. Ensuite, j'appuie sur 'RETURN' et je continue. C'est une façon simple pour moi de résoudre ce petit problème.

Au fait, j'alias a='cal', ou quelque chose d'autre pour donner au hit vide 'a' une petite utilité.

-1voto

dborba Points 538

Bien que ce ne soit pas une solution unique, une façon d'y parvenir est d'écrire un script qui change à la fois le mode d'édition et l'invite simultanément & d'utiliser ledit script exclusivement lors du changement de mode.

IE : Avoir un script appelé bash-vi qui exécute "set -o vi ; PS1='desired vi mode prompt' ;".


Edit : (Je ne peux pas encore commenter) Je vois, je suppose que je n'ai pas lu la question assez attentivement et que j'ai négligé la référence au mode insertion et commande. Je ne sais pas non plus comment le configurer. En général, cela n'a pas été un problème pour moi puisque je n'utilise le mode commande que pour de brèves opérations - je peux voir pourquoi ce serait utile cependant.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X