Meino Christian Cramer wrote:
Hi,
For the real vim junkie there are several sources for the real
stuff ( == newest versions of vim/scripts/plugins et cetera
available).
I myself use to update my vim source with the newest patches and
download the runtime files on a regular base. Furthermore I download
the newest CVS stuff from vim-ruby, the ruby support files for vim.
The vim-ruby files go into ~/.vim/
The runtime files go into /usr/share/vim/vim70 (== $VIMRUNTIME)
The result of the compilation of the sources go also to $VIMRUNTIME
(and non-scripts to other places).
I recognized, that some files are doubled: Older version of the
vim-ruby support files go also to $VIMRUNTIM.
Furthermore: Newly installed vimruntimefiles will be overridden with
older ones from the compilation results of the vim sources (when a
new patch is available...).
As it seems with this practice of trying to have always the newest
vim stuff on my hd I will shoot into my own feet...
If vim recognized a script file which it has already loaded from
another place, will it be loaded ?
Has vim an automatism to load the script with the highest versioning?
How can I simplify the update of my whole vim environment without the
need to look into each single file whether it is newer/older as
another file of the same name at another place and what version of
this file will work with what version of another file of the same
suit at shat place?
Keep hacking!
mcc
Vim has no knowledge of script versions.
When using the :runtime! command or in most cases of auto-loading, Vim loads
all scripts by a given name and/or in a given subdirectory in all directories
listed in the 'runtimepath' option. Most full-fledged scripts have an if
clause at the start, with a :finish command, to avoid running them twice.
This means that the first one loaded will win. OTOH, small tweak scripts
don't have that, so the last one loaded will win.
'runtimepath' normally lists the following directories, in the following order:
1. ~/.vim/ (on Unix) or ~/vimfiles (on Windows) for full-fledged scripts
applicable to one user only.
2. $VIM/vimfiles/ (on all platforms) for system-wide full-fledged scripts not
distributed with Vim
3. $VIMRUNTIME/ for scripts distributed with Vim. Any upgrade may silently
add, remove or change anything in this tree; on Unix, make install or make
installruntime _will_ silently replace everything here with scripts from
vim70/runtime/ in your build directory tree (which were downloaded with the
sources).
4. $VIM/vimfiles/after/ for small system-wide tweaks to any of the above
5. ~/.vim/after/ or ~/vimfiles/after/ for small single-user tweaks to any of
the above.
On Windows, the binaries are usually installed in $VIMRUNTIME; on Unix, they
are installed in some nearby directory already in the $PATH.
Typical values:
$VIM: (Unix) /usr/local/share/vim/ ; (Windows) C:\Program Files\Vim
$VIMRUNTIME: (version 7.0) $VIM/vim70
executables: (Unix) /usr/local/bin/ ; (Windows) same as $VIMRUNTIME.
This means that user scripts (in 1 and 5) may override all others, and
system-wide scripts (in 2 and 4) may override those distributed with Vim (in 3).
AFAIK, the only reliable way to always use the newest version is to manually
check the datestamps (in directory listings and/or near the top of the file
text) of any duplicated files. Note that depending on how you upgrade your
sources, the timestamp shown in a directory listing can be either the
date-time when the files were updated by their authors, or the date-time when
you downloaded them.
Best regards,
Tony.