Question

J'ai mis des alias dans mon .bashrc pour ouvrir un groupe de fichiers de projet dans vim, chacun dans leur propre onglet:

gvim -p <list of file names using absolute paths>

Ceci est bien beau, sauf qu'il ya plusieurs groupes de fichiers que je pourrais vouloir déplacer entre à un moment donné (mon projet actuel utilise Ruby on Rails, de sorte que explique que). Ce qui serait vraiment génial est si je pouvais ajouter les nouveaux onglets à une instance existante de gvim. Dans mon dernier poste que je travaillais sur Vista; Je suis autour de cela en ouvrant un tas d'onglets vides dans vim, qui m'a permis de clic droit sur un nom de fichier et choisissez « Ouvrir dans existant sans nom gvim. » Maintenant, j'utilise Ubuntu et il n'y a pas une telle chose dans le menu contextuel. Est-il possible de le faire à partir de la ligne de commande?

Était-ce utile?

La solution

Si vim est compilé avec l'option clientserver , vous pouvez le faire. Démarrez votre instance vim avec le drapeau suivant:

$ gvim --servername GVIM  # GVIM is the server name. It can be anything.

Pour ouvrir plusieurs onglets dans ce cas, vous pouvez exécuter la commande:

$ gvim --servername GVIM --remote-tab file1 file2 file3 ...

La fonction clientserver dans vim est très pratique. Il est pas limité à l'ouverture de fichiers; il peut être utilisé pour envoyer une commande à vim en utilisant la ligne de commande. Par exemple, pour fermer une instance vim à distance, vous pouvez utiliser:

$ gvim --servername GVIM --remote-send '<Esc>:wqa<CR>'

Autres conseils

De l'intérieur de Gvim, le type :tabe {file_name}. Cela ouvre le fichier nommé dans un nouvel onglet. Si vous n'êtes pas friands de taper les noms longs, essayez ceci:

:tabnew
:e .

Cela ouvrira une nouvelle page de l'onglet vide et ouvrez un navigateur de fichiers. Vous pouvez cliquer sur la souris votre chemin ou utiliser le clavier. Cliquez ou appuyez sur la touche Entrée du fichier que vous souhaitez ouvrir. Essayez d'utiliser le clavier pour positionner le curseur sur le fichier que vous voulez ouvrir puis cliquez sur « t ». Cela ouvre le fichier sélectionné dans un nouvel onglet, en gardant le navigateur de fichier ouvert dans le premier onglet. Cela pourrait être un moyen rapide d'ouvrir un tas de fichiers.

Il y a beaucoup de choses que vous pouvez faire avec des pages de l'onglet qui pourraient rendre la vie plus facile. Pour accéder à la section correspondante dans les années Vim manuel d'aide en ligne, le type :h tabpage.

Vous voulez que votre menu contextuel de Windows pour vous permettre d'ouvrir des fichiers dans un nouvel onglet de la fenêtre gvim actuellement ouvert?

Enregistrer cela comme dans un fichier appelé temp.reg et double-cliquez dessus pour ajouter les paramètres à votre registre. Assurez-vous de modifier le chemin de vim si le vôtre est différent.

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\Shell\Open with &Vim]
[HKEY_CLASSES_ROOT\*\Shell\Open with &Vim\command]
@="\"C:\\Program Files (x86)\\Vim\\vim73\\gvim.exe\" -p --remote-tab-silent \"%1\" \"%*\""

Vous avez maintenant un menu contextuel comme ceci:

vim menu contextuel

Les utilisateurs de Linux peuvent utiliser ce type de script:

#!/bin/bash

ANS=`pgrep -fx "gvim --servername GVIM"`

echo $@

if [[ ! $ANS ]]; then
    gvim --servername GVIM
fi

if [[ $1 ]]; then
    gvim --servername GVIM --remote-tab "${@}"
fi

Et puis modifier le fichier gvim.desktop pour utiliser ce script:

Exec=/home/user/bin/my_gvim_script.sh %F

Il y a une façon:

n*.cpp|tab ba

ou si vous voulez partager:

n*.cpp|sba

Si vous souhaitez en savoir plus:

:help ba

et je ne sais pas ce qui est n, mais cela ne fonctionnerait pas sans elle.

Voici mon gvim de script de démarrage. Il est une extension des réponses précédentes. Il assure une seule instance de gvim fonctionnera lorsque gvim est appelé en toutes circonstances:

  • gvim est appelée sans nom de fichier quand aucune instance de gvim est en cours d'exécution; gvim est démarré.
  • gvim est appelée sans nom de fichier en présence d'une instance de gvim; un nouvel onglet vide est ouvert.
  • gvim est appelée avec un nom de fichier avec ou sans une instance de gvim; un onglet est ouvert montrant le fichier.

Cela imiter le comportement standard d'autres éditeurs.

#!/bin/bash
exec=/usr/bin/gvim  #the path to gvim
if [ $# -eq 0 ]
  then  # no filename given
    if [ -z $($exec --serverlist) ]
      then  # no filename given and no gvim instance
        $exec -f --servername GVIM > /dev/null 2>&1
      else  # no filename given, but a gvim instance exists
        $exec -f --servername GVIM --remote-send ':tabnew<CR>' > /dev/null 2>&1
    fi
  else  # filenames given
    $exec -f --servername GVIM --remote-tab "$@" > /dev/null 2>&1
fi
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top