vim windows 10为本机包管理器设置packpath选项

use*_*912 5 vim gvim

[1] 我使用 vimrc 中的 'packpath' 选项创建了一个新的包目录:

:set packpath+=$HOME/vimlocal/pack
Run Code Online (Sandbox Code Playgroud)

[2] 我运行命令 :set packpath? 输出中列出了该目录:

packpath=

~/vimfiles,
C:\Program Files (x86)\Vim/vimfiles,
C:\Program Files (x86)\Vim\vim81,
C:\Program Files (x86)\Vim/vimfiles/after,
~/vimfiles/after,
~/vimlocal/pack
Run Code Online (Sandbox Code Playgroud)

但目录中的插件(colorschemes)都不起作用。目录结构为:

~/vimlocal/pack/colors/start/color1
~/vimlocal/pack/colors/start/color2
~/vimlocal/pack/colors/start/color3
Run Code Online (Sandbox Code Playgroud)

[3]我运行命令:

:set rtp? 
Run Code Online (Sandbox Code Playgroud)

但该目录未在输出中列出。

runtimepath=

~/vimlocal,
~/vimfiles,
~\vimfiles\bundle\alduin-master,
~\vimfiles\bundle\color-plugins,
~\vimfiles\bundle\ctrlp.vim,
~\vimfiles\bundle\dbext.vim,
~\vimfiles\bundle\goyo.vim,
~\vimfiles\bundle\hexHighlight.vim-master,
~\vimfiles\bundle\limelight.vim,
~\vimfiles\bundle\manpageview,
~\vimfiles\bundle\markdown-preview.nvim-master,
~\vimfiles\bundle\supertab,
~\vimfiles\bundle\tabular,
~\vimfiles\bundle\ultisnips,
~\vimfiles\bundle\utl.vim,
~\vimfiles\bundle\vim-colorschemes,
~\vimfiles\bundle\vim-HiLinkTrace,
~\vimfiles\bundle\vim-markdown-master,
~\vimfiles\bundle\vim-zenroom2,
~\vimfiles\bundle\vimoutliner,
~\vimfiles\bundle\vimtweak-master,
C:\Program Files (x86)\Vim/vimfiles,
C:\Program Files (x86)\Vim\vim81,
C:\Program Files (x86)\Vim\vim81\pack\dist\opt\matchit,
C:\Program Files (x86)\Vim/vimfiles/after,
~\vimfiles\bundle\vim-markdown-master\after,
~\vimfiles\bundle\ultisnips\after,
~\vimfiles\bundle\tabular\after,
~/vimfiles/after
Run Code Online (Sandbox Code Playgroud)

注意:路径 '~\vimfiles\bundle....' 由 Pathogen 设置。我正在尝试将所有插件从那里迁移到新的 packpath 目录。

[4] 当我将颜色方案文件移动到包文件中时

'C:\Program Files (x86)\Vim\vim81\pack' 
Run Code Online (Sandbox Code Playgroud)

(具有相同的目录结构)它们工作正常(并出现在runtimepath命令的输出中)。

我的问题是为什么它们不能在我使用 packpath 选项在 vimrc 中设置的目录中工作?

fil*_*den 4

您不应pack'packpath'设置中包含该组件,因为 Vim 会为您添加该组件。

你想要的很简单:

:set packpath+=$HOME/vimlocal
Run Code Online (Sandbox Code Playgroud)

或者,更好的是,只需使用现有的~/vimfiles并将您的插件存储在下面~/vimfiles/pack/colors/start/color1等等。'packpath'如果你这样做了,你根本不需要碰。

你可以看一下packages的文档,里面写着:

当 Vim 启动时,处理完你的 后.vimrc,它会扫描'packpath'pack/*/start目录下的所有目录以查找插件。首先,所有这些目录都被添加到'runtimepath'. 然后所有插件都被加载。

强调我的。你可以看到这pack是 Vim 添加的路径组件,所以你不应该将它放在 中列出的路径中'packpath'。事实上,正如您所观察到的,Vim 包含的那些已经根本不包含了pack,但正如pack您自己已经注意到的那样,这些目录正下方的目录将适用于包。