Vim环境变量以及插件安装路径【转】
VIM 插件一般安装在 5 个地方, 存放插件的路径都列在“runtimepath”选项中,我们可以使用 set 命令查看它:
:set runtimepath ?
一般来说显示结果如下:
runtimepath=~/.vim,/usr/local/share/vim/vimfiles,/usr/local/share/vim/vim63,/u
sr/local/share/vim/vimfiles/after,~/.vim/after
Unix 下的 $HOME/.vim 或 Windows 下的
%HOME%
/vimfiles是存储用户自定义脚本及插件。 该目录下的脚本会在系统脚本加载前执行, 用于扩展与替代系统脚本原有功能。
$VIM/vimfiles: 功能同上, 不过是全局设置,对所有用户均有效的。
$VIMRUNTIME: 随 VIM 一同发行的插件与脚本。 不要在这里存放你自己下载或安装的文件,升级 VIM 的时候, 这里的文件很可能被直接覆盖掉, 不会给出任何提示信息。
Unix 下的 $HOME/.vim/after 或 Windows 下的
%HOME%
/vimfiles/after:用于对已有设置进行一些小的修正和覆写。
$VIM/vimfiles/after: 对所有用户均有效的一些全局设置修正脚本。
以上路径都是使用“VIM 语言”给出的, 一般情况下, $VIMRUNTIME 都不会被定义为系统环境变量, $VIM 在少数情况下会在 VIM 之外被定义。 如果你想知道这些路径都是什么, 可以在 VIM 中使用
:echo $VIMRUNTIME
或
:echo $VIM”
以上提到的 5 个目录的子目录结构都是相同的。 如果你希望在其它目录里安装插件的话,建议使用 $VIMRUNTIME 的目录结构作为模版, 将必要的目录结构创建完整,像这样:
+
+ colors
+ compiler
+ doc
+ etc
+ ftdetect
+ ftplugin
+ indent
+ keymap
+ plugin
+ syntax
Vim环境变量影响插件的设置
给vim安装一个插件的时候,按照官方manual,就是装不上去,于是自己又重头开始弄。
发现了这个问题在vim里面
:echo $VIM
显示 /usr/share/vim
:echo $VIMRUNTIME
显示 /usr/share/vim/vim72
:scriptname
显示的所有的都是跟上面的两个路径有关的插件。
若在.vimrc里面定义了:
let $VIMRUNTIME="/usr/share/vim/vim72"
set runtimepath=/usr/share/vim/vim72
所以runtimepath只有一个路径,而完整的runtimepath可能是这个样子
runtimepath=~/.vim,/usr/local/share/vim/vimfiles,/usr/local/share/vim/vim72,/u
sr/local/share/vim/vimfiles/after,~/.vim/after
所以修改.vimrc
修改set runtimepath=/usr/share/vim/vim72,/home/tom/.vim/,/home/tom/.vim/after
:wq!
然后关闭所有的vim窗口,再打开输入
:scriptname
显示了官方插件所说的应该安装的路径 ~/.vim 这个路径 ,这个路径是usr路径,即对应/home/你的用户名/.vim这个路径,不是#~ 这个路径(对应/root/~),是$~ ,网上没有网友把这个路径说出来,我又经常工作在root下,所以出现了这个问题。
在unix下的 $HOME/.vim 或者 windows下的 %HOME%/vimfiles : 是用户自定义脚本和插件的目录,该目录下的脚本会在系统脚本加载前执行,用于扩展和替代系统脚本原有的功能。也就是说,该目录下的配置文件,可以增加和替换原来.vimrc配置文件(windows下为_vimrc).
其中:
$VIM/vimfile : 功能和上面一样,不同的是 它对 所有用户有效。
$VIMRUNTIME :是跟vim一起发行的插件和脚本,建议是不要在这里存放你自己下载或者安装的文件,应为升级VIM的时候,这里的文件很可能直接覆盖掉,并且不会给出任何提示消息。
Unix下的$HOME/.vim/after 或者Windows下的%HOME%/vimfiles/after : 用于对已有设置进行一些小的修正和覆写。
$VIM/vimfiles/after:对所有用户均有效的一些全局设置修正脚本。
这里一共提到了5个目录,它们的子目录结构都是相同的,如果你希望在其它目录里安装插件,建议使用$VIMRUNTIME的目录结构为模板,如下
+ <Directory>
+ colors
+ compiler
+ doc
+ etc
+ ftdetect
+ ftplugin
+ indent
+ keymap
+ plugin
+ syntax
关于$VIM和$VIMTUNRIME
环境变量 "$VIM" 用于定位许多 Vim 使用的用户文件,例如用户启动脚本 ".vimrc"。不同的系统有所不同.
为了省得每个用户都设置 $VIM 环境变量,Vim 试图根据以下顺序取得 $VIM 的值:
1. $VIM 环境变量定义的值。你可以这样使得 Vim 在特定目录下找到它的支持文件。例如:
setenv VIM /home/usrname/vim
2. 使用 'helpfile' 的路径,除非它本身也包含其它的环境变量 (因为其缺省值是 "$VIMRUNTIME/doc/help.txt": 鸡生蛋的问题)。文件名 ("help.txt" 或者别的) 被去掉。结尾的几项目录名也被分别去掉。其顺序是: "doc"、"runtime" 和"vim{version}" (例如,"vim54")。
3. 对 MSDOS、Win32 和 OS/2 而言,Vim 试图使用可执行文件的目录名。如果以 "/src"结尾,则去掉该部分。这用于以下场合: 你把 .zip 文件解压到某个目录,然后调整搜索路径以找到其中的 vim 可执行文件。结尾的目录名被去掉。其顺序是:
"runtime" 和 "vim{version}" (例如,"vim54")。
4. Unix 上,使用编译时定义的安装目录 (见 ":version" 的输出结果)。
一旦 Vim 完成以上操作,它据此设置 $VIM 环境变量。要在其后修改,可以这样使用":let" 命令:
:let $VIM = "/home/usrname/vim/"
环境变量 "$VIMRUNTIME" 用于定位若干支持文件,比如在线的帮助文档和语法高亮文件。例如,主帮助文件正常情况下应该是 "$VIMRUNTIME/doc/help.txt"。你通常不需要自己设置 $VIMRUNTIME,而应该让 Vim 自己去找。以下是查找$VIMRUNTIME 的值所用的顺序:
1. 如果设置了环境变量 $VIMRUNTIME,则使用之。如果运行时文件在不常见的位置,可以在这里定义。
2. 如果 "$VIM/vim{version}" 存在,则使用之。{version} 是 Vim 的版本号,不包括任何的 '-' 或 '.'。例如: "$VIM/vim54"。这是正常情况下 $VIMRUNTIME 的值。
3. 如果 "$VIM/runtime" 存在,使用之。
4. 使用 $VIM 的值。这和较老的版本后向兼容。
5. 如果设置了 'helpfile' 选项,并且它不包括 '$',则使用它的值,去掉后面的"doc/help.txt" 部分。
在 Unix 上,有一个 $VIMRUNTIME 编译时的缺省值 (检查 ":version" 的输出),跳过步骤 2、3 和 4,而在第五步之后使用编译时的缺省值。这意味着编译时的缺省值否决了$VIM 的值。这可以用于 $VIM 为 "/etc" 而运行时文件在 "/usr/share/vim/vim54" 的情况。
一旦 Vim 完成以下操作,它据此设置 $VIMRUNTIME 环境变量。要在其后修改之,这样使用 ":let" 命令:
:let $VIMRUNTIME = "/home/piet/vim/vim54"
如果你需要在外壳里得到 $VIMRUNTIME 的值 (例如,在帮助文件里 grep 脚本),你可以这么用:
VIMRUNTIME=`vim -e -T dumb --cmd 'exe "set t_cm=\<C-M>"|echo $VIMRUNTIME|quit' | tr -d '\015'