我正在尝试在我自己的"dotfiles“项目中为自己构建一个集中的VIM配置,这样我就可以轻松地在我的多台计算机(即家庭和工作)之间同步我的VIM配置更改。
我的想法是,我可以在任何目录中维护这个dotfiles项目的git代码库,在本例中是~/git/dotfiles/vim。然后,此目录将包含多个根据其提供的配置类型进行分组的.vim文件。因此,我将有一个仅包含此目录中其他.vim文件的home.vim文件:
source plugins.vim
source keymappings.vim
...现在的想法是,我的~/.vimrc文件将不包含任何内容,除了源这个点文件项目和任何实际上不打算同步的配置。在我的例子中,它只是:
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点文件中可以解决这个问题。但这并不可取,我想依赖相对路径。
发布于 2017-03-06 02:39:50
runtime命令
当文件是Vim的sourced时,路径是相对于当前工作目录的。
如果不想指定相对路径,可以使用runtime命令。根据documentation的说法,这个命令
从
runtimepath和/或packpath指定的每个目录中的{file}读取Ex命令。
默认情况下,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.vimhttps://stackoverflow.com/questions/42611648
复制相似问题