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

**URL:** <https://www.debian-fr.org/t/resolu-mate-terminal-lancer-vim-dans-un-nouvel-onglet/70604>\
**Category:** Programmation\
**Created:** [Août 14, 2016, 3:09 UTC](https://www.debian-fr.org/t/resolu-mate-terminal-lancer-vim-dans-un-nouvel-onglet/70604 "2016-08-14T15:09:13Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![josephtux](https://www.debian-fr.org/user_avatar/www.debian-fr.org/josephtux/32/3985_2.png) [@josephtux](https://www.debian-fr.org/u/josephtux)\
**Post date:** [Août 14, 2016, 3:09 UTC](https://www.debian-fr.org/t/resolu-mate-terminal-lancer-vim-dans-un-nouvel-onglet/70604/1 "2016-08-14T15:09:14Z")

</div>

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:

```auto
$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

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Août 15, 2016, 8:44 UTC](https://www.debian-fr.org/t/resolu-mate-terminal-lancer-vim-dans-un-nouvel-onglet/70604/2 "2016-08-15T08:44:08Z")

</div>

Bonjour

> [@josephtux](#):
>
> ```auto
> $mate-terminal --tab --title="PageN°" --working-directory=./bash --active --command="/usr/bin/vim exemple_mate.tex"
> 
> ```

Essaye comme ça :

```auto
$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)

---

<div class="post-metadata">

**Author:** ![josephtux](https://www.debian-fr.org/user_avatar/www.debian-fr.org/josephtux/32/3985_2.png) [@josephtux](https://www.debian-fr.org/u/josephtux)\
**Post date:** [Août 15, 2016, 12:01 UTC](https://www.debian-fr.org/t/resolu-mate-terminal-lancer-vim-dans-un-nouvel-onglet/70604/3 "2016-08-15T12:01:49Z")

</div>

> [@anon29980398](#):
>
> $mate-terminal --tab --title=«&nbsp;PageN°&nbsp;» --working-directory=./bash --active --command=‹&nbsp;bash -c «&nbsp;vim exemple\_mate.tex&nbsp;»;bash&nbsp;›

J’avais bien essayé la syntaxe du type: _–command=bash -c «&nbsp;vim&nbsp;»_, 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

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Août 15, 2016, 12:25 UTC](https://www.debian-fr.org/t/resolu-mate-terminal-lancer-vim-dans-un-nouvel-onglet/70604/4 "2016-08-15T12:25:08Z")

</div>

> [@josephtux](#):
>
> …  
> Cependant la fermeture de _vim_ continue à me mettre face à un écran qui affiche:  
> `Le processus fils a quitté normalement avec le statut 0.`  
> …

Je ne sais pas de quel processus fils il s’agit, mais si ce message est un message «&nbsp;d’erreur&nbsp;» 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`

* * *

> [@josephtux](#):
>
> …qui n’est pas le shell interactif dans lequel je voudrais que soit lancé vim…

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

---

<div class="post-metadata">

**Author:** ![josephtux](https://www.debian-fr.org/user_avatar/www.debian-fr.org/josephtux/32/3985_2.png) [@josephtux](https://www.debian-fr.org/u/josephtux)\
**Post date:** [Août 15, 2016, 6:56 UTC](https://www.debian-fr.org/t/resolu-mate-terminal-lancer-vim-dans-un-nouvel-onglet/70604/5 "2016-08-15T18:56:27Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Août 15, 2016, 7:35 UTC](https://www.debian-fr.org/t/resolu-mate-terminal-lancer-vim-dans-un-nouvel-onglet/70604/6 "2016-08-15T19:35:23Z")

</div>

[quote=«&nbsp;josephtux, post:5, topic:70604&nbsp;»]  
…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…

* * *

> [@josephtux](#):
>
> …passer une variable à l’option --command …

```auto
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}'"

```

---

<div class="post-metadata">

**Author:** ![josephtux](https://www.debian-fr.org/user_avatar/www.debian-fr.org/josephtux/32/3985_2.png) [@josephtux](https://www.debian-fr.org/u/josephtux)\
**Post date:** [Août 16, 2016, 10:12 UTC](https://www.debian-fr.org/t/resolu-mate-terminal-lancer-vim-dans-un-nouvel-onglet/70604/7 "2016-08-16T10:12:42Z")

</div>

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.
