在VIM手册中阅读usr_43后,我创建了〜/ .vim / ftplugin
手册说检查我的runtimepath,结果
runtimepath=~/.vim,/var/lib/vim/addons,/usr/share/vim/vimfiles,/usr/share/vim/vim73,/usr/share/vim/vimfiles/after,/var/lib/vim/addons/after,~/.vim/after
运行路径下的ftplugin,还是需要在运行时路径中添加'〜/ .vim / ftplugin'?
然后我尝试检测sql3文件:
vim ~/.vim/ftplugin/sqlte3.vim
if exists("b:did_ftplugin")
echo "yes : did_ftpplugin"
finish
elseif
echo "no : did_ftplugin"
endif
let b:did_ftplugin = 1
if did_filetype()
echo "yes : did_filetype"
finish
elseif
echo "no : do file type"
endif
if getline(1) =~ '^#!*[/\\]sqlite3\>'
setf sql3
echo "sqlite3 file"
elseif
echo "not sqlite3 file"
endif
之后我做了'vim~ / test.sql3'
我想要获得一些输出来验证我的工作流程,但我什么都没得到。
如何从〜/ .vim / ftplugin / sqlte3.vim获取输出?
答案 0 :(得分:2)
sql3不是自动检测文件类型。您必须在autocommand目录中添加ftdetect。类似的东西:
au BufRead,BufNewFile *.sql3 set filetype=sql3
比你的工作流程工作正常。
答案 1 :(得分:0)
文件类型插件是放置代码的错误位置,如
if getline(1) =~ '^#!*[/\\]sqlite3\>'
setf sql3
echo "sqlite3 file"
elseif
您应该将其添加到ftdetect/sql3.vim
:
autocmd BufRead,BufNewFile * :if getline(1)=~#'^#!.*[/\\]sqlite3\>' | set ft=sql3.vim | endif
。另请注意,如果您想要sql3
文件类型,那么ftplugin也必须在您的示例中命名为sql3.vim
,而不是sqlite3.vim
。 ftdetect插件的文件名并不重要,这只是一个协议,对于ftdetect文件检测一个文件类型,其名称应与检测到的文件类型匹配。