snipMate只处理空缓冲区?

时间:2012-10-24 08:14:52

标签: vim snipmate

我正在尝试将snipMate与sql文件一起使用,但在编辑现有文件时它似乎不起作用。

如果我创建一个新的空缓冲区(没有文件;例如从开始菜单启动gvim),并将文件类型设置为sql:set ft=sql),它就可以工作。但是,如果我然后尝试打开一个sql文件(例如:e c:\blah.sql)并进行编辑,则snipMate不再有效。什么给了!?

设定:

  • gvim的
  • vim 7.3
  • Windows 7
  • snipMate 0.84
  • 另外,我确实在filetype plugin on文件中有.vimrc

修改

显然,如果我打开一个空缓冲区,将文件类型设置为sql,然后使用w c:\blah.sql保存到文件,我现在打开一个sql文件并且snipMate继续工作。

修改

以下是我当前.vimrc的要点以防万一:https://gist.github.com/3946877

3 个答案:

答案 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奇迹般地开始工作了!

希望将来可能对某人有所帮助。