我正在尝试在自己的“dotfiles”项目中为自己构建一个集中式VIM配置,以便我可以轻松地在多台计算机(即家庭和工作)之间轻松同步我的VIM配置更改。
我的想法是我可以在任何目录中维护这个dotfiles项目的git repo,在这种情况下是~/git/dotfiles/vim
。然后,此目录将包含基于其提供的配置类型分组的多个.vim
文件。所以,我会有一个home.vim
文件,只能在此目录中找到其他.vim
个文件:
source plugins.vim
source keymappings.vim
...
现在的想法是,我的~/.vimrc
文件将不包含任何内容,除了获取此dotfiles项目以及任何真正无意同步的配置。就我而言,它只是:
source ~/git/dotfiles/vim/home.vim
不幸的是,看起来这种类型的配置不允许home.vim
加载其目录中的任何文件。当我尝试使用此配置集运行vim
命令时,我收到以下错误:
$ vim .vimrc
Error detected while processing /Users/evanbrodie/git/dotfiles/vim/home.vim:
line 1:
E484: Can't open file plugins.vim
line 2:
E484: Can't open file keymapping.vim
我的猜测是我需要配置一些东西告诉Vim在当前工作目录中搜索这个文件而不是需要依赖绝对路径。我可以基于这样的事实得出这个结论:将绝对路径替换为.vim
点文件将解决问题。但这不可取,我想依靠相对路径。
答案 0 :(得分:0)
runtime
命令当文件由Vim source
d时,路径相对于当前工作目录。
如果您不想指定相对路径,则可以使用runtime
命令。根据{{3}},这个命令
从
runtimepath
给出的每个目录中的{file}中读取Ex命令 和/或packpath
。
默认情况下,Unix中的runtimepath
设置为$HOME/.vim, $VIM/vimfiles, $VIMRUNTIME, $VIM/vimfiles/after, $HOME/.vim/after
。这意味着如果您的.vim
文件位于这些目录中的任何一个,则只需运行以下命令,而无需在路径中指定目录组件,例如,
runtimepath plugins.vim
文件路径还可以包含目录组件,例如,我有一个用于编写电子邮件的文件类型插件(~/.vim/ftplugin/mail.vim
),它会提供包含预定义缩写的文件(位于~/.vim/shared/abbreviations.vim
中,以便它们可以也可以被其他文件类型使用)。这是通过我ftplugin/mail.vim
中的以下行来实现的:
runtime shared/abbreviations.vim