vim-snipmate和supertab如何一起使用

18

我刚刚尝试安装SnipMate插件,但它无法正常工作。当我在代码中输入片段关键字后按Tab键时,自动完成功能被触发,而不是插入SnipMate的代码片段。

我试图重新映射按键(到c-m),但即使这样,自动完成功能也会被触发。在重映射之前,c-m键没有任何反应。

我在vimrc中进行了此映射。文档告诉我要在after/plugin/snipmate.vim文件中进行映射,但该脚本未加载(使用:scriptnames命令可以查看已加载的脚本)。

您有什么想法吗?

6个回答

21

4
我曾经遇到过类似的问题,使用了一份来自vim.org的旧版本snipmate。
这个作者并不总是更新vim.org页面,但他在github上相当频繁地进行更新。
请从这里下载最新版本,并查看是否能解决你的问题。

2
你把 <C-m> 映射为了什么?是 <Tab> 还是你的插件函数调用?你有没有尝试过不使用 SuperTab 的 SnipMate 插件?
两个插件的主要功能都硬编码到 <Tab> 上,这使得它们的使用有些不可预测。我尝试过,但我不喜欢它。
相反,也许你可以保留 SnipMate(如果它单独工作正常),并将 omnicompletion 快捷键映射为更容易使用的东西。我在我的 .vimrc 中设置了这些内容:
" change the mapleader from \ to ,
let mapleader=","

" omnicompletion : words
inoremap <leader>, <C-x><C-o>

" omnicompletion : filenames
inoremap <leader>: <C-x><C-f>

" omnicompletion : lines
inoremap <leader>= <C-x><C-l>

另外,autocomplpop.vim也非常好用。


1
请使用SuperTab 2.0版本。 不要使用最新的2.1版本,它们之间不兼容。

0

我成功地将 SnippMate 的 TAB 键映射到另一个键上,我的情况是 c-j,并且它正常工作:

ino <silent> <c-j><c-r>=TriggerSnippet()<cr>
snor <silent> <c-j> <esc>i<right><c-r>=TriggerSnippet()<cr>

我在after/plugin/snipmate.vim中进行了更改。在我的情况下,:scriptnames将该文件列为已加载。

0
将其添加到 .vimrc 中,当你使用 Tab 键时,就会显示代码片段列表。
``` au BufRead,BufNewFile *.py set expandtab au BufRead,BufNewFile *.sh set expandtab au BufRead,BufNewFile *.go set expandtab ```

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接