Puis-je ouvrir un fichier dans une instance Vim existante à partir d'une commande externe?

20

Certaines applications ont la notion de "session" , où vous pouvez exécuter une commande pour charger un fichier dans une instance existante d'une application.

Par exemple, lorsque je tape:

$ firefox http://vi.stackexchange.com

Firefox réutilise un processus Firefox existant, plutôt que d'en créer un nouveau.

Est-ce possible avec Vim?

ideasman42
la source

Réponses:

22

Vous avez besoin de vim compilé avec +clientserver, puis vous pouvez utiliser la commande vim --servername SERVERpour démarrer une instance de vim et vim --servername SERVER --remote FILEouvrir le fichier dans l'instance de vim nommée.


macOS uniquement

MacVim exécute un serveur par défaut - vous pouvez utiliser mvim --remote-tab-silentpour ouvrir un fichier dans un nouvel onglet dans votre instance MacVim existante, ou mvim --remote-silentpour ouvrir le fichier dans un nouveau tampon dans le même onglet.

craigp
la source
4

Bien que la réponse de @ craigp soit correcte, j'ai trouvé plus pratique d'ajouter simplement --remote-silentsans se soucier des noms de serveur
(cela suppose que vous ne voulez pas adresser les instances de vim nommées) .

Cela démarrera le serveur ou en utilisera un s'il n'est pas déjà démarré.

Il peut être appelé comme ceci:

gvim --remote-silent '+cal cursor(line,col)' some_file

par exemple:

gvim --remote-silent '+cal cursor(102,4)' src/code.c

J'ai fini par avoir besoin d'utiliser une autre méthode pour déplacer le curseur à cause de cette initialisation à distance.

ideasman42
la source