无法让Vim在ftdetect自定义插件项目中自动加载文件

7gcisfzg  于 2023-10-20  发布在  其他
关注(0)|答案(3)|浏览(128)

我下面的例子是从书中的VimL入门第4章。
ftdetect目录中,我有以下行:

autocmd BufRead,BufNewFile *.mpdv set filetype=mpdv

在名为mpdv.Vim的文件中
但是,当我打开mpdv文件时,不会执行此命令。在.vimrc中,我有:

filetype plugin on

我加载插件的方式如下:在~/.vimrc中,我有:

set exrc

这将强制Vim加载本地.vimrc文件
然后在我的projects pluginfolder中,我有以下文件:

set runtimepath+=path/to/my/plugin

当我打开一个mpdv文件时,为什么Vim没有加载我的autocmd?

t1qtbnec

t1qtbnec1#

我注意到的一件事(这似乎也是你的情况)是,如果你在运行时路径上添加新的路径,你应该在更新运行时路径之后完成filetype plugin on
例如,使用以下vimrc,它可以正常工作:

set runtimepath+=/home/techgaun/fun/vim/mpc
filetype plugin indent on

而且,如果你运行:scriptnames,你应该看到ftdetect脚本从你的mpc插件目录中加载好了。

kkih6yb8

kkih6yb82#

在我的例子中,Vim似乎没有在自定义运行时路径的ftdetectftplugin目录下获取文件。我试着把目录放在我的.vim文件夹下:

.vim
├── autoload
│   └── mpc.vim
├── ftdetect
│   └── mpdv.vim
├── ftplugin
│   └── mpdv.vim
└── plugin
    └── mpc.vim

现在,ftdetect下的脚本运行,正如我运行:scriptnames时所看到的:

1: /usr/share/vim/vimrc                                                                             
2: /usr/share/vim/vim74/debian.vim
3: ~/.vimrc
4: /usr/share/vim/vim74/filetype.vim
5: ~/.vim/ftdetect/mpdv.vim
6: /usr/share/vim/vim74/ftplugin.vim
7: /usr/share/vim/vim74/syntax/syntax.vim
8: /usr/share/vim/vim74/syntax/synload.vim
9: /usr/share/vim/vim74/syntax/syncolor.vim
10: ~/.vim/plugin/mpc.vim
7tofc5zh

7tofc5zh3#

如果你使用Vim的原生:packadd功能,请注意:h packadd的以下内容:

If the filetype detection was not enabled yet (this
            is usually done with a `syntax enable` or `filetype on`
            command in your .vimrc file), this will also look
            for "{name}/ftdetect/*.vim" files.

因此,请确保将任何packadd调用放在syntax enablefiletype plugin indent on之前:

packadd! UltiSnips
" etc

filetype plugin indent on

这类似于在手动修改runtimepath后启用filetype

相关问题