RÉSOLU Mate-terminal: lancer vim dans un nouvel onglet

Bonjour

je souhaite lancer dans un script une série d’onglets dans mate-terminal, les nommer, et y lancer vim “un_fichier.txt”.
Le problème est le suivant: vim est lancé dans le même processus que le terminal (l’onglet), ce qui implique qu’une fermeture (en général involontaire) de vim entraine également une fermeture du terminal.

Comment lancer vim dans cet onglet nouvellement créé comme il le serait «à la main» ?

Voici le modèle de ligne que j’espérais efficace:

$mate-terminal --tab --title="PageN°" --working-directory=./bash --active --command="/usr/bin/vim exemple_mate.tex"

Si je veux lancer vim immédiatement après avoir créé ce nouveau processus (nouvel onglet) dans cet onglet marqué --active,

Je suppose qu’il est possible de lancer «/usr/bin/vim fichier.txt» dans un nouveau processus shell, par exemple, mais je ne trouve pas la syntaxe. ( bash /usr/bin/vim renvoie le message:

fichier binaire impossible à lancer

Je ne trouve rien de plus sur mate-terminal que le man (où je ne comprend pas tout: ROLE, PROFILENAME ?)

Merci pour votre aide

Bonjour

Essaye comme ça :

$mate-terminal --tab --title="PageN°" --working-directory=./bash --active --command='bash -c "vim exemple_mate.tex";bash'

Testé sur Debian 3.16.0-4-amd64 avec Mate Terminal 1.8.1 après avoir installé vim 7.4 (2:7.4.488-7)

J’avais bien essayé la syntaxe du type: –command=bash -c “vim”, qui ne résolvait pas vraiment le problème.

c’est le 2ème «;bash» qui fait la différence; autrement dit, cela empêche bien la fermeture du terminal (l’onglet) en même temps que la sortie de vim.

Cependant la fermeture de vim continue à me mettre face à un écran qui affiche:
Le processus fils a quitté normalement avec le statut 0.
et qui n’est pas le shell interactif dans lequel je voudrais que soit lancé vim, si c’est possible.

Merci MicP

Je ne sais pas de quel processus fils il s’agit, mais si ce message est un message “d’erreur” de vim qui indique que tout s’est bien terminé, stderr peut être redirigé vers /dev/null en ajoutant 2>/dev/null

vim exemple_mate.tex 2>/dev/null


J’ai utilisé bash mais sh fonctionne aussi et d’autre shells pourraient sans doute être utilisés de la même façon.

Pardon si je me suis mal exprimé: ma question concernant le shell interactif ne concerne pas l’alternative entre bash, zh ou autre, mais entre le fait que ce shell soit ou non interactif.
Dans l’état actuel, la sortie de vim ne me donne pas accès à la ligne de commande dans le shell à partir duquel vim a été lancé.
Si c’est impossible, je me satisferais d’ajouter un ;bash à la suite de vim.

Par ailleurs, je butte sur un nouveau problème: celui de passer une variable à l’option --command
comme:
--command='bash -c "vim $variable.tex";bash'
au lieu de:
--command='bash -c "vim exemple_mate.tex";bash'

Je pense qu’il faut passer par eval, mais je n’y parviens pas encore.

Encore merci MicP

[quote=“josephtux, post:5, topic:70604”]
…la sortie de vim ne me donne pas accès à la ligne de commande dans le shell à partir duquel vim a été lancé.

[/quote]Je viens de tester depuis debian mate, et si depuis l’onglet de mate-terminal dans lequel vim est lancé j’entre :sh je me retrouve dans un shell bash avec comme répertoire de travail celui qui avait été demandé (working-directory=./bash)

J’ai peut-être mal compris le problème…


NoPg="42"
monShell="/bin/bash"
optionShell="-c"
RepTravail="./bash"
FichAouvrir="nom de fichier avec espaces.txt"

mate-terminal --tab --title="PageN° ${NoPg}" --working-directory="${RepTravail}" --active --command="${monShell} ${optionShell} 'vim \"${FichAouvrir}\";${monShell}'"

Formidable, le passage de variable comme options à vim fonctionne.

Et pour bash, c’est vrai, ça fonctionne bien. Ma question concernait uniquement mon incompréhension, à propos de l’écran non-interactif qui s’affiche lorsque l’on sort soit de vim, soit de bash si bash a été lancé après vim dans la commande.

Encore un grand merci MicP.