Cygwin:/usr/bin/vim 如何解析特定版本的 vim?

Cygwin:/usr/bin/vim 如何解析特定版本的 vim?

当我跑步时,这件事就开始了vimCygwin我突然收到错误消息:E185: Cannot find color scheme 'alduin'在今天之前我并没有收到过这个错误。

我一直在安装 Cygwin 包,一定是无意中安装了新版本的vim(?):我现在有了文件夹/usr/share/vim/vim74//usr/share/vim/vim80/

当我运行时,vim启动画面显示版本为 8.0.1567。我想我输入了alduin.vim.../vim74/但没有.../vim80/

我的问题:如何/usr/bin/vim.exe与特定版本的 vim 关联?即当我运行“ vim”时为什么调用 vim 8.0 而不是 vim 7.4?

> which vim
/usr/bin/vim
> 
> ls -l /usr/bin/vim*
-rwxr-xr-x 1 User None 2645011 Mar  4  2018 /usr/bin/vim.exe
lrwxrwxrwx 1 User None       7 Dec 14 21:39 /usr/bin/vimdiff -> vim.exe
-rwxr-xr-x 1 User None    2099 Mar  4  2018 /usr/bin/vimtutor
lrwxrwxrwx 1 Usr None       8 Dec 14 21:31 /usr/bin/vimx -> gvim.exe
> 
> find /usr/share/vim/vim74/ -name "*.exe"
> find /usr/share/vim/vim80/ -name "*.exe"
> 
> printenv | grep -i vim
> 

请注意,上面/usr/bin/vim不是指向我两个 vim 版本目录之一中的可执行文件的软链接,我本来假设这个版本选择就是这样完成的。

答案1

通过包管理器(Cygwin 的,但同样适用于“真正的”Linux 发行版),你只能安装特定版本的 Vim。因此/usr/bin/vim.exe(由/usr/bin包管理器拥有)不需要链接。Vim 包可以直接将可执行文件放在那里。

现在对于运行时文件(在 下/usr/share/vim),在“单一版本”参数之后,路径中也不需要版本号,但 Vim 的默认安装脚本(Makefile)中有一个版本,大多数软件包维护者都保持这种状态。根据您(意外)升级的方式,您要么拥有一个完全废弃的 Vim 7.4 运行时/usr/share/vim/vim74/vim.exe并被覆盖),要么这只是一个几乎为空的骨架目录层次结构,仅包含那些文件添加到其中(像你的colors/alduin.vim)。

为了避免将来出现此类问题,请不要使用系统目录,而是将 Vim 自定义项放在用户特定目录;即~/.vim/,正如所述:help load-plugins。Unix/Linux(Vim 的起源)在系统和用户之间有明确的区分,尽管在 Windows 下这种区分不太明显(至少在早期),但建议坚持这种区分,尤其是在 Cygwin 中。

相关内容