1

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

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

设置:

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

编辑

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

编辑

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

4

3 回答 3

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我的机器上,你可以通过:echo $VIMRUNTIME在 vim 会话中运行找到你的

于 2012-10-24T16:57:57.643 回答
1

看起来 vim 无法识别扩展名中的 sql 文件类型。试着把它放到你的 .vimrc 中:

augroup filetypedetect
  au! BufRead,Bufnewfile *.sql setfiletype sql
augroup END
于 2012-10-24T11:40:00.213 回答
0

呜呜呜,我是个白痴!

我决定删除除了 snipMate 之外的所有插件,然后慢慢将我的插件重新添加回来。我在连接 snipMate 时并没有意识到,但我之前已经添加了一个用于完成代码完成的插件,称为code complete。显然这个书呆子和 snipMate 正在交战,所以一旦我删除了完整的代码,snipMate 就奇迹般地开始工作了!

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

于 2012-10-25T05:34:03.770 回答