这是第一次"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
Run Code Online (Sandbox Code Playgroud)
我相信这就是我想要的: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
Run Code Online (Sandbox Code Playgroud)
main代码片段时,$ vi App.java
main
Run Code Online (Sandbox Code Playgroud)
按下后<TAB>给我以下结果/错误
main<Plug>snipMateNextOrTrigger
Run Code Online (Sandbox Code Playgroud)
:verbose imap <Plug>snipMateNextOrTrigger 给我No mapping found
Run Code Online (Sandbox Code Playgroud)
finish在注释部分plugin/snipMate.vim,:verbose imap <Plug>snipMateNextOrTrigger给了我以下信息,i <Plug>snipMateNextOrTrigger * <C-R>=snipMate#TriggerSnippet()<CR>
Last set from ~/.vim/bundle/vim-snipmate/plugin/snipMate.vim
Run Code Online (Sandbox Code Playgroud)
并在按下 <TAB>
Error detected while processing /home/prayag/.vim/bundle/vundle/autoload/snipMate.vim:
line 15:
E122: Function <SNR>84_RemoveSnippet already exists, add ! to replace it
Run Code Online (Sandbox Code Playgroud)
.vimrc,:imap <C-J> <Plug>snipMateNextOrTrigger
:smap <C-J> <Plug>snipMateNextOrTrigger
Run Code Online (Sandbox Code Playgroud)
相同的配置适用于另一台ubuntu 13.04机器.
我一定是做错了什么但是弄不清楚.
首先,我建议你: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
Run Code Online (Sandbox Code Playgroud)
并从另一个目录中的"snipMate.vim"收到错误.我删除了该文件,重新安装了snipMate,现在它可以工作了.