VIM的环境变量影响插件的设立。(Debian)

VIM的环境变量影响插件的设置。(Debian)

Debian 在给vim安装一个插件的时候,按照官方manual,就是装不上去。google了很久没有答案。于是自己又重头开始弄。

发现了这个问题。


在vim里面

:echo $VIM

显示 /usr/share/vim

:echo $VIMRUNTIME

显示 /usr/share/vim/vim72

:scriptname

显示的所有的都是跟上面的两个路径有关的插件。google到的一个老外的 scriptname里面,却有/home/老外名字/.vim/xxx.vim 这种的插件路径和名字

为什么我的没有,因为我在.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'