DigitalSpirit / Blog

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=$'\
'
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.

Ouvrir l'article

Onglets dans la même instance de GVim

Voilà une petite astuce pour les utilisateurs de GVim qui vous permettra d'ouvrir tous vos documents dans la même instance grâce aux onglets.

La page Vim documentation : remote nous apprend qu'il est possible de faire fonctionner Vim comme un serveur recevant des messages de clients et exécutant les commandes demandées par ces derniers.
Une de ces commandes nous intéresse et va justement nous permettre d'ouvrir des documents dans la même instance de Vim, il s'agit de remote-tab-silent.

Testons cette commande :

 $ gvim -p --remote-tab-silent toto

Une instance de GVim s'ouvre avec toto dans un onglet (le paramètre p permet d'ouvrir un onglet par fichier).
Gardons GVim ouvert et testons de nouveau :

 $ gvim -p --remote-tab-silent foo

Le fichier foo s'affiche maintenant dans un nouvel onglet de la même instance GVim, nous avons donc 2 fichiers ouvert dans GVim : toto et foo.

J'ai fait un petit script bash qui permet de s'affranchir des problèmes rencontrés à l'ouverture avec Nautilus (qui tente d'ouvrir les documents avec le paramètre "-f") et qui évite surtout de devoir saisir les paramètres à chaque fois, il suffit alors de remplacer le fichier binaire de gvim par le script :

 $ mv /usr/bin/gvim /usr/bin/gvim-bin

Ensuite, il vous suffit de déposer le script ci joint dans le dossier /usr/bin et de lui attribuer les droits d'exécution.

Bon Gvim !

Ouvrir l'article