Sous Vim, comme sous plein d'applications, CTRL-Z stoppe le processus pour revenir dans le shell. Ensuite, on se sert de bg ou fg pour mettre en avant ou en arrière plan.
J'aimerais reproduire ce comportement dans un terminal qui s'ouvre directement avec VIM.
Voici ce que j'ai essayé :
xterm -e vim
Lance un xterm avec uniquement vim dedans, CTRL-Z ne renvoit donc sur rien.xterm -e sh -c "bash && vim"
Ouvre un xterm dans lequel tourne bash puis, une fois qu'on a quitté bash, lance vim. Mais j'aimerais que le vim tourne à l'intérieur du bash, comme si je l'avais tapé par moi-même. Alors j'ai pensé à mettre un & plutôt qu'un && :xterm -e sh -c "bash & vim"
Mais le bash est complètement zappé.xterm -e sh -c "vim & bash"
Mais : Vim alerte ! Il me dit qu'il n'est pas lancé dans un terminal.Je me retrouve avec bash et vim en même temps dans le terminal.
Il faudrait que le vim lancé ait pour père le bash du xterm...
Le but final est de lancer un vim dans lequel CTRL-Z me renvoit dans un shell, comme si j'avais tapé vim dans un shell normal.
Sinon, pour les alternatives :
:sh ouvre un shell, mais c'est autrement plus lent que CTRL-Z
screen ne fait pas exactement ce que je veux.
Merci d'avance :=)
# pourquoi faire ?
Posté par B. franck . Évalué à 1.
il y a peut-être une alternative.
Sinon, je n'ai pas vu l'essai:
bash xterm -e vim &
qui lance un bash père d'une xterm qui lance vim, le tout en bg...
[^] # Re: pourquoi faire ?
Posté par Dan . Évalué à 1.
bash xterm n'existe pas, il faut l'option -c entre les deux
J'ai l'impression que bash -c xterm est équivalent à xterm tapé dans bash.
---
C'est pour lancer dans un xterm (en fait ce sera après plutôt un urxvt mais ça change rien) un vim.
Tape :
xterm -e vim
puis CTRL-Z
et tu comprendras le problème.
# chez moi, ca marche pareil
Posté par NeoX . Évalué à 1.
mais j'ai pas saisi l'interet du Ctrl+Z qui me renvoie sur le shell en suspendant le vim
par rapport au :sh qui lance un shell dans le vim
et surtout quel est l'interet de lancer un vim directement si c'est pour l'arret pour avoir un shell, autant lancer le shell d'abord, non ?
[^] # Re: chez moi, ca marche pareil
Posté par Dan . Évalué à 1.
# des essais
Posté par NeoX . Évalué à 1.
mais il doit falloir lancer un vim DANS un bash DANS un xterm
donc en theorie et sans avoir essayer
xterm -e bash -c vim
man xterm
et
man bash
pour savoir comment lancer une commande à l'appel du programme.
[^] # Re: des essais
Posté par Dan . Évalué à 1.
Si je fais CTRL-Z, le titre change en bash, mais aucun shell n'est accessible.
J'ai bien maté les man pages (bon, tu comprendras que j'ai pas tout lu le man bash, j'ai juste regardé les options).
Mais le problème c'est justement comme dans ton exemple.
Quand on lance une commande dans un bash, la commande se lance mais le bash ne reste pas en arrière plan comme si on l'avait tapé.
En fait, le problème est moins trivial qu'il n'en a l'air, sauf bien sûr si j'ai sauté l'option qui va bien.
[^] # Re: des essais
Posté par NeoX . Évalué à 1.
pour ensuite savoir "comment le faire"
parce que là j'ai l'impression que tu cherches à couper les cheveux en 4...
[^] # Re: des essais
Posté par Dan . Évalué à 1.
xterm -e vim
et que dans ce xterm, CTRL-Z me renvoie vers un shell.
[^] # Re: des essais
Posté par LaBienPensanceMaTuer . Évalué à 1.
[^] # Re: des essais
Posté par Étienne . Évalué à 1.
Ca n'a rien d'idiot, ca peut permettre d'avoir un éditeur lancé en arrière plan dans une session X. Ce qui peut remplacer un gvim tout en gardant le comportement d'un vim, par exemple le fait que ^Z de redonne la mains sur le process père ce qui permet d'avoir un vrai shell.
Etienne
[^] # Re: des essais
Posté par Étienne . Évalué à 1.
C'est parcequ'en faisant un bash -c, le shell invoqué n'est pas un shell interactif et il n'y aura donc pas possibilité de saisire une commande.
Je ne vois pas trop de solution tout de suite car pour que le ^Z donne un shell interactif, il faut qu'il ai été lancé à partir d'un shell interactif. ^Z suspend vim et te redonne la main sur le process parent, dans notre cas, le process parent n'est pas un shell interactif.
Etienne
[^] # Re: des essais
Posté par Étienne . Évalué à 1.
Le contenu de la variable PROMPT_COMMAND est executé avant chaque prompt, donc arrivé là tu as déjà un shell interactif. En demandant d'executer vim (puis en supprimant la variable pour éviter de lancer des vim en boucle), tu lance vim dès le début.
Le --norc est là car cette variable PROMPT_COMMAND est utilisée redéclarée dans le /etc/bashrc de la distrib que j'utilise.
Tu peux aussi passer par une autre variable et dans ton ~/.bashrc faire en sorte de positionner PROMPT_COMMAND comme il faut pour éviter le --norc.
Etienne
[^] # Re: des essais
Posté par Dan . Évalué à 1.
J'allais dire j'ai trouvé une solution pourrie mais qui marche, mais la tienne reste mieux.
Je vais quand même l'écrire, on sait jamais ça pourrait aider quelqu'un.
------------------------------------
urxvt -name Ma_Session_Vim & sleep 5 && FvwmCommand "All (Ma_Session_Vim) Focus" && xvkbd -xsendevent -text "vim\r"
1) J'ouvre un terminal
2) J'attends : récupérer le PID et l'attendre serait plus propre qu'un sleep 5
3) Une commande interne à mon gestionnaire de fenêtre qui met le focus sur la fenêtre
4) Un clavier virtuel écrit vim puis "entrer" dans le terminal.
C'est simplement horrible en plus de pas être standard.
------------------------------------
Sinon je trouve ta solution au contraire très propre (surtout par rapport à la mienne), mon bashrc ne permet pas non plus ta commande si on ne met pas le --norc.
J'essaierai de poster la partie de bashrc qu'll faut dès que possible.
[^] # Re: des essais
Posté par Étienne . Évalué à 1.
J'essaierai de poster la partie de bashrc qu'll faut dès que possible.
Dans le .bashrc il suffit de mettre simplement à la fin
Et démarrer xterm avec la variable BASH_START_COMMAND contenant la commande à executer. Dans ton cas
BASH_START_COMMAND=vim xterm
[^] # Re: des essais
Posté par Dan . Évalué à 1.
J'ai mis ta condition en fin de ~/.bashrc
Et je lance ceci :
BASH_START_COMMAND='vim --servername Danou' urxvt -fn "xft:Bitstream Vera Sans Mono:pixelsize=20" -bg black -fg white +sb -name vim
Ça marche parfaitement et quand je reviens dans le shell, le titre reste vim, ce qui est parfait pour éviter d'oublier que c'est vim et pas un shell normal.
Encore merci.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.