The Unison File Synchronizer runs on and across Unix and Windows and is free (source code under GNU license). It detects changes on each system, and prompts for synchronization direction, offers merges, etc. Thus, you can edit your configuration on any system and reconcile any conflicts.

If you only have one master system where you make edits, and just want to push or pull updates to/from clients, the simpler rsync tool may be sufficient.

One helpful Vim setting in a mixed-OS environment is to use .vim for Vim user settings also for Windows systems (Vim automatically picks up a .vimrc config file instead of _vimrc by default). The following snippet in .vimrc will do the trick, and thus allow you to synchronize without directory renaming:

" On Windows, also use '.vim' instead of 'vimfiles'; this makes synchronization
" across (heterogeneous) systems easier.
if has('win32') || has('win64')
set runtimepath=$HOME/.vim,$VIM/vimfiles,$VIMRUNTIME,$VIM/vimfiles/after,$HOME/.vim/after
endif

Some people have put (parts of) their home directory under version control, using a version control system like Subversion or Git. Many have also blogged about it, so search the web for instructions and reports.
With such a setup, you get a (centralized or distributed, depending on the system being used) versioned history of your Vim configuration, and can use the commands of the version control system (like checkout and commit) to update it.

Amazing. Some brief info on what "synchronize" means would be good (is there are a master? is each machine a master? what if conflicts? what if a machine is off?). After setup, does the user have to take some specific action apart from modifying one of the specified files? JohnBot 03:38, October 25, 2009 (UTC)