这是第一次"M试图snipmate与VIM 7.3中的Ubuntu 12.04.
.vimrc
配置是:" kill vi compatibility set nocompatible " be iMproved " ------------------------------------- " ---------snipmate-------------------- " ------------------------------------- Bundle "MarcWeber/vim-addon-mw-utils" Bundle "tomtom/tlib_vim" Bundle "honza/vim-snippets" Bundle "garbas/vim-snipmate" " ------------------------------------- filetype plugin on
我相信这就是我想要的:BundleInstall
.
我的树结构.vim/bundle
是
prayag@prayag:~$ tree -d .vim/bundle/ .vim/bundle/ |-- vim-colors-solarized | |-- autoload | |-- bitmaps | |-- colors | `-- doc |-- vim-snipmate | |-- after | | `-- plugin | |-- autoload | |-- doc | |-- ftplugin | |-- plugin | `-- syntax |-- vim-snippets | |-- UltiSnips | |-- autoload | `-- snippets | |-- coffee | `-- javascript `-- vundle |-- after | |-- ftplugin | `-- plugin |-- autoload | `-- vundle |-- doc |-- ftplugin |-- plugin |-- syntax `-- test `-- files 139 directories
main
代码片段时,$ vi App.java main
按下后
给我以下结果/错误
mainsnipMateNextOrTrigger
:verbose imap snipMateNextOrTrigger
给我No mapping found
finish
在注释部分plugin/snipMate.vim
,:verbose imap snipMateNextOrTrigger
给了我以下信息,isnipMateNextOrTrigger * =snipMate#TriggerSnippet() Last set from ~/.vim/bundle/vim-snipmate/plugin/snipMate.vim
并在按下
Error detected while processing /home/prayag/.vim/bundle/vundle/autoload/snipMate.vim: line 15: E122: Function84_RemoveSnippet already exists, add ! to replace it
.vimrc
,:imapsnipMateNextOrTrigger :smap snipMateNextOrTrigger
相同的配置适用于另一台ubuntu 13.04机器.
我一定是做错了什么但是弄不清楚.
Vim:snipMate插件不会触发代码段完成
首先,我建议你:set nocompatible
从你的vimrc文件中删除.'cp'
如果在启动时找到个人vimrc文件(不是系统vimrc文件),Vim会自动重置该选项,如果有的:source ~/.vimrc
话,它可能会产生令人困惑的结果.
对您的问题的完整答案将是一个非常大的故障排除流程图.这将是一件好事,但我不会那么努力.以下是我们在评论中用于诊断此问题的对话摘要.
我安装了snipMate,但是当我进入
"main<Tab>"
插入模式时,我得到了"main<Plug>snipMateNextOrTrigger"
.
什么做:verbose imap <Tab>
和:verbose set cpo?
告诉你吗?检查:version
"<size> version",其中<size>是Tiny,Small,Big,Huge(我可能会遗漏一些)之一.(问题可能是如何<Tab>
映射,或者您可能处于兼容模式,或者您的vim版本可能不支持地图,或者可能不支持<Tab>
地图中的表示法.)
":verbose imap <Tab>"
显示"<Tab>"
映射到"<Plug>snipMateNextOrTrigger"
in"~/.vim/bundle/vim-snipmate/after/plugin/snipMate.vim"
,其他东西看起来正确.
怎么样:verbose imap <Plug>snipMateNextOrTrigger
?(问题似乎<Tab>
是映射到某些东西;应该重新映射某些东西,但事实并非如此.)
":verbose imap <Plug>snipMateNextOrTrigger"
给我"找不到映射".
那就是问题所在.文件plugin/snipMate.vim包含该行inoremap <silent> <Plug>snipMateNextOrTrigger <C-R>=snipMate#TriggerSnippet()<CR>
.您没有该文件,它缺少该行,或者:source
当vim启动时它不是d.或者可能在loaded_snips
其他地方定义变量.查看文件,:scriptnames
在启动vim后立即检查,并在其他启动文件中搜索"loaded_snips".我想还有其他可能性:imapclear
,但是,这似乎不太可能.
文件在那里,并且有正确的行.(起初我看了"after/plugin/snipMate.vim"而不是"plugin/snipMate.vim".)我检查了":scriptnames"并列出了它.我没有检查定义"loaded_snips"的其他文件,但我注释掉了
if exists('loaded_snips') || &cp || version < 700 finish endif
并从另一个目录中的"snipMate.vim"收到错误.我删除了该文件,重新安装了snipMate,现在它可以工作了.