在vim中检查我自己的文件类型

时间:2011-12-07 08:44:37

标签: vim

在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获取输出?

2 个答案:

答案 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文件检测一个文件类型,其名称应与检测到的文件类型匹配。