Vim Tips Wiki

Prevent a second instance of Vim from starting

Revision as of 02:31, June 14, 2009 by (Talk)

1,619pages on
this wiki
Tip 957 Printable Monobook Previous Next

created July 7, 2005 · complexity basic · author Jonathan Orlev · version 5.7

For me, the most irritating thing when using the wonderful Vim is starting a second copy of Vim while a first one was already running.

For example: opening a file already open in the first Vim instance within a second instance of Vim gives an error message, because the swap file is already in use (not to mention that this might cause a loss of data).

So I added this to my vimrc. I am using gvim on Windows, but this will probably also work with gvim in other systems.

" If the v:servername ends with a number, then this is for sure a second
" copy of Vim.
if v:servername =~? '^.*[0-9][0-9]*$'
  echo "MyWarning: Another copy of gvim or Vim is probably loaded!"


For users running gvim on Unixes, an alternative is to always use

/usr/local/bin/gvim --remote-silent FILENAME

If gvim is already running, the file is opened there. Otherwise, a new gvim instance is started.

For interactive shell sessions, it would help to define a shorter alias, such as:

alias gvimrem='/usr/local/bin/gvim --remote-silent'

Here is a better version for the tip. This is more general, and therefore preferable:

" If the serverlist contains more than one item, than another instance of
" Vim is loaded.
if serverlist() =~? "\n."
  echo "MyWarning: Another copy of gvim or Vim is probably loaded !"

I agree, this serverlist() functions is working on Linux, where v:servername does not. Replace the original!

And you may also replace the operator '=~?' with '=~'

See the :RemoteOpen command from remoteopen.vim which is part of latex-suite plugin.

Around Wikia's network

Random Wiki