проверьте мой собственный тип файла в vim - PullRequest
0 голосов
/ 07 декабря 2011

После прочтения usr_43 в руководстве по VIM я создал ~ / .vim / ftplugin

В инструкции сказано проверить мой путь выполнения, результат

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 ]

2 голосов
/ 07 декабря 2011

sql3 не является автоматически определяемым типом файла. Вы должны добавить автокоманду в ftdetect dir. Что-то вроде:

au BufRead,BufNewFile *.sql3        set filetype=sql3

Чем ваш рабочий процесс должен работать нормально.

0 голосов
/ 11 декабря 2011

Плагин Filetype - это неправильное место для размещения кода вроде

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, обнаруживающих один тип файла, их имя должно соответствовать обнаруженному типу файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...