我正在尝试将snipMate与sql文件一起使用,但在编辑现有文件时它似乎不起作用。
如果我创建一个新的空缓冲区(没有文件;例如从开始菜单启动gvim),并将文件类型设置为sql
(:set ft=sql
),它就可以工作。但是,如果我然后尝试打开一个sql文件(例如:e c:\blah.sql
)并进行编辑,则snipMate不再有效。什么给了!?
设定:
filetype plugin on
文件中有.vimrc
。修改
显然,如果我打开一个空缓冲区,将文件类型设置为sql,然后使用w c:\blah.sql
保存到文件,我现在打开一个sql文件并且snipMate继续工作。
修改
以下是我当前.vimrc的要点以防万一:https://gist.github.com/3946877
答案 0 :(得分:1)
看起来vim无法识别扩展名中的sql文件类型。试着把它放到你的.vimrc中:
augroup filetypedetect
au! BufRead,Bufnewfile *.sql setfiletype sql
augroup END
答案 1 :(得分:1)
我在我的计算机上试过你的.vimrc
,但它运行正常。 filetype.vim
中有一个$VIMRUNTIME
文件,可以在启动时检测文件类型,并且很可能在该文件中存在问题。这些是我的相关内容:
" SQL
au BufNewFile,BufRead *.sql call s:SQL()
func! s:SQL()
if exists("g:filetype_sql")
exe "setf " . g:filetype_sql
else
setf sql
endif
endfunc
您可以将这些内容复制到$VIMRUNTIME/filetype.vim
或仅发送到.vimrc
,这样可以解决问题,但您不应该首先解决此问题。
让我知道你是如何进步的。
注意 $VIMRUNTIME
在我的计算机中/usr/share/vim/vim73
,您可以通过在vim会话中运行:echo $VIMRUNTIME
找到您的
答案 2 :(得分:0)
Uggggh,我是个白痴!
我决定删除除snipMate之外的所有插件,然后我慢慢地将我的插件添加回来。当我连接snipMate时我没有意识到这一点,但我之前已经添加了一个用于执行代码完成的插件{{{ 3}}。显然这个书呆子和snipMate处于战争状态,所以一旦我删除了代码,完全snipMate奇迹般地开始工作了!
希望将来可能对某人有所帮助。