Onglets dans une seule instance de Gvim
Voici une mise à jour d'un script bash pour Gvim d'un précédent article permettant d'ouvrir tous les fichiers dans une seule instance de Gnome Vim, cette version vient corriger des problèmes d'ouverture de fichiers lorsque ces derniers inclus des espaces et permet d'ouvrir une instance par utilisateur.
Comme pour le précédent script, il s'agit de remplacer le binaire gvim par le script en question, donc, commencez par exécuter la commande suivante :
$ mv /usr/bin/gvim /usr/bin/gvim-bin
Puis, créez un fichier /usr/bin/gvim et copier le code suivant :
#!/bin/bash
# 2010-09-09, hugo
GVIM_PATH='/usr/bin/gvim-bin'
SERVERNAME=$UID
ARGS=''
IFS=$'\n'
for file in $*
do
# Skip arg
if [ "${file:0:1}" = '-' ]
then
ARGS="$ARGS ${file}"
continue
fi
# Open file in new tab
$GVIM_PATH --servername $SERVERNAME -p --remote-tab-silent $file
# Stand by while server is creating
while true; do
$GVIM_PATH --serverlist | grep $SERVERNAME
if [[ $? == 0 ]]; then
break
fi
done
done
Notez que si votre distribution met à jour gvim, il vous faudra recommencer la manip.



Commentaires
Sympa le script mais je trouve ca furieusement bancal de faire un move du binaire.
Si quelque chose tente de trouver le binaire pour une raison ou une autre il va à la place trouver le script et ca risque de pas bien se passer.
Je conseillerai plutôt d'avoir un nom proche mais tout de même différent (gvim-tab ?), et à la limite d'en faire un alias après.
Ça évitera déjà de refaire la manip à chaque mise à jour de GVim.
Dans l'idée, oui, renommer un binaire, ce n'est pas une bonne idée, surtout un binaire installé par un gestionnaire de paquet MAIS ce n'est que gvim, c'est pas comme si je renommais des commandes de bases appelées en interne par le système...
Enfin, Gvim n'est pas ou extrèmement peu mis à jour (aucune mise à jour m'a obligé à refaire la manip)
Sinon tu joues sur les priorités dans le path. Souvent, /usr/local/bin est dans le path avant /usr/bin (c'est le cas sur mon pc du boulot), et ça tombe bien car en général /usr/local est plutôt fait pour la tambouille personnelle. Bref, si tu mets ton script dans /usr/local/bin/gvim et tu y appelles /usr/bin/gvim, ça devrait marcher aussi et à mon avis ça sera plus propre.
Christophe-Marie Duquesne: Oui et non car je n'ouvre pas mes fichiers exclusivement depuis la ligne de commande, d'ailleurs, en ligne de commande, je vais plus avoir tendance à ouvrir vim que gvim...
Le reste du temps, j'ouvre gvim depuis un explorateur de fichiers quelconque (Nautilus ou autre...) et du coup, ta modif serait sans conséquence.
Il est possible de modifier le PATH à un niveau plus haut (/etc/profile je crois).
Pourquoi tu met ton script en "stand by" ? Il a pas une option style "--remote-wait-tab-silent" ?
Comment tu fait pour ouvrir le fichier nommé -salut ?
Pas persuadé pour /etc/profile, à voir...
Le standby sert juste à attendre que l'instance soit bien créée avant de lancer l'ouverture dans un onglet du fichier suivant.
Je n'ai pas réussi à ouvrir plusieurs fichiers en même temps avec gvim d'un seul coup dans une même instance, voilà pourquoi j'utilise cette astuce qui vaut ce qu'elle vaut mais si quelqu'un à mieux, je suis preneur.
Concernant les fichiers commençant par un -, en effet, pour ma part, ça ne m'arrive pas donc, pas de souci, c'est juste une sécurité pour les arguments, à corrigé pour une prochaine version.
Dans le meilleur des mondes, il faudrait une option à gvim permettant d'ouvrir par défaut dans un nouvel onglet...