花了好几天废了九牛二虎之力终于在win下把ycm插件装上了

然而在配置插件的时候发现snipmate插件与youcompleteme插件会发生tab键冲突

而ycm比较调,直接使snipmate插件完全失效了

在vim中执行以下代码

  1. :scriptnames

发现snipmate插件是正常加载的

那就可能是发生了键冲突

先在vimrc中修改ycm的触发键试试

  1. let g:ycm_key_list_select_completion = ['<c-n>', '<Down>']
  2. let g:ycm_key_list_previous_completion = ['<c-p>', '<Up>']

然而并不行,应该还是是ycm干的。ycm你真流氓,自己都不用tab键了,还不让释放出来让别人用。。。

那么试试修改snipmate

按照snipmate的文档,修改trigger key要改动snipmate.vim/after/plugin/snipMate.vim文件

例如将<tab>改为<C-\>可以将下面两行

  1. " You can safely adjust these mappings to your preferences (as explained in
  2. " :help snipMate-remap).
  3. ino <silent> <tab> <c-r>=TriggerSnippet()<cr>
  4. snor <silent> <tab> <esc>i<right><c-r>=TriggerSnippet()<cr>

改为

  1. ino <silent> <C-\> <c-r>=TriggerSnippet()<cr>
  2. snor <silent> <C-\> <esc>i<right><c-r>=TriggerSnippet()<cr>

同样不行。。。。

怒了。。。。不行老子不用ycm了,就当自己这几天白折腾了!

百度出还有一款类似的插件,嗯。。试试看

https://github.com/SirVer/ultisnips

用vundle将snipmate删掉

然后在vimrc中增加以下代码

  1. " Track the engine.
  2. Plugin 'SirVer/ultisnips'
  3.  
  4. " Snippets are separated from the engine. Add this if you want them:
  5. Plugin 'honza/vim-snippets'
  6.  
  7. " Trigger configuration. Do not use <tab> if you use https://github.com/Valloric/YouCompleteMe.
  8. let g:UltiSnipsExpandTrigger="<tab>"
  9. let g:UltiSnipsJumpForwardTrigger="<c-b>"
  10. let g:UltiSnipsJumpBackwardTrigger="<c-z>"
  11.  
  12. " If you want :UltiSnipsEdit to split your window.
  13. let g:UltiSnipsEditSplit="vertical"

保存后重新打开vim

执行

  1. :PluginInstall

会安装两个插件。安装完后新建.cpp文件,测试main<tab>,it works!(若不起作用,请修改ycm的触发键)

还是ultisnips厉害啊。。

后来了解到snipmates在09年已经停止维护了,其小组后来加入了ultisnips中,既然有ultisnips,为什么还存在snipmates呢,因为ultisnips需要python支持

领完,作者是这样回答的

Q: Should “snipMate be deprecated in favour of UltiSnips”?
A: No, because snipMate is VimL, and UltiSnips requires Python. Some people want to use snippets without having to install Vim with Python support. Yes – this sucks.
One solution would be: Use snippets if they are good enough, but allow overriding them in UltiSnips. This would avoid most duplication while still serving most users. AFAIK there is a nested-placeholder branch for snipMate too. snipMate is still improved by Adnan Zafar. So maybe time is not ready to make a final decision yet.

vim中SnipMate 和 YouCompleteMe 插件触发键 tab 冲突的更多相关文章

  1. vim中自动补全插件snipmate使用

    vim中自动补全插件snipmate使用 1.下载snipMatezip:https://github.com/msanders/snipmate.vim/archive/master.zip 2.解 ...

  2. Vim中安装delimitMate,auto-pairs插件不能输入中文问题

    在安装了delimitMate插件之后发现不能正常使用中文输入了,输入法系统是ibus. 解决办法是在ibus的设置中的“在应用程序中使用内嵌编辑模式”这一项去除就可以正常输入中文了,看来可能是ibu ...

  3. Vim扩展YouCompleteMe插件

    在Vim中安装YouCompleteMe插件 一.安装前的说明: 1.确保vim版本>=7.4,若MAC OS,建议直接安装MacVim(8.0版本). ps:如果不想使用MacVim的GUI, ...

  4. Vim中YouCompleteMe插件安装

    背景 YouCompleteMe需要使用GCC进行编译,然而Centos 6.7默认的GCC版本太低,所以需要使用devtools-2,用来安装多个版本GCC手动编译安装GCC的坑简直不要太多(类似于 ...

  5. vim安装YouCompleteMe 插件

    要安装YouCompleteMe ,vim须支持python.看是否支持,可以在vim中:version 查看, 如果python前有+号,就是支持,减号就是不支持. 如果不支持,需要以编译安装方式重 ...

  6. 跟我一起学Vim补全神级插件--YouCompleteMe

    最近重拾Vim,编译部署来补全插件YCM,这个插件的补全效果和在写C代码的时候的自动提示错误信息等还是十分棒的,写点心得下来,也算给自己做个备忘. 快速安装: 首先参考我的.vimrc配置,用Vund ...

  7. Vim 中文件目录浏览插件——NERD tree

    说明 :vim的插件NERDTree用于使得vim窗口分左右窗口显示的用法说明.其中,左侧为目录的树形界面,简称为NERDTree界面,右则为vim界面. 一.配置步骤 下载地址: http://ww ...

  8. UBuntu14.04 --vim安装YouCompleteMe插件

    说明 我电脑的系统参数(用 uname -a命令查看)如下: Linux avyn-Lenovo --generic #-Ubuntu SMP Tue Mar :: UTC i686 i686 i68 ...

  9. 【vim环境配置】解决ubuntu上 由YouCompleteMe插件配置不当引起的 自动补全失效的问题

    背景: 由于不可抗拒的原因,学习环境由之前centos的一台机器上,变成了ubuntu的一台机器上.因此,需要在新的ubuntu的机器上再配置一次vim环境.算起来这已经是第三次配置vim环境了(ma ...

随机推荐

  1. 201521123005 《Java程序设计》 第十二周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对象(属性:int id, String name,int age,doubl ...

  2. 201521123006 《java程序设计》 第12周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对象(属性:int id, String name,int age,doubl ...

  3. 201521123059 《Java程序设计》第十二周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对象(属性:int id, String name,int age,doubl ...

  4. 201521123118《java程序与设计》第9周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 1. 常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己以前编写的代码中经常出 ...

  5. 多线程面试题系列(2): CreateThread与_beginthreadex本质区别

    本文将带领你与多线程作第一次亲密接触,并深入分析CreateThread与_beginthreadex的本质区别,相信阅读本文后你能轻松的使用多线程并能流畅准确的回答CreateThread与_beg ...

  6. shell脚本命令,一些你在书上找不到的命令。

    1.!$<!$是一个特殊的环境变量,它代表了上一个命令的最后一个字符串.如:你可能会这样: $mkdir mydir$mv mydir yourdir$cd yourdir 可以改成: $mkd ...

  7. Socket类 以及 ServerSocket类 讲解

    Socket类 套接字是网络连接的端点,套接字使应用可以从网络中读取数据,可以向网络中写入数据.不同计算机上的两个应用程序可以通过连接发送或接收字节流,以此达到相互通信的目的. 为了从一个应用程序向另 ...

  8. 常见注入手法第二讲,APC注入

    常见注入手法第二讲,APC注入 转载注明出处 首先,我们要了解下什么是APC APC 是一个简称,具体名字叫做异步过程调用,我们看下MSDN中的解释,异步过程调用,属于是同步对象中的函数,所以去同步对 ...

  9. Android 之异步任务(AsyncTask,Handler,Message,looper)

    AsyncTask: 3个类型(Params,Progress和Result),4个步骤(onPreExecute(),doInBackground(Params…),onProgressUpdate ...

  10. [转]IOS开发中的CGFloat、CGPoint、CGSize和CGRect

    http://developer.apple.com/library/ios/#documentation/GraphicsImaging/Reference/CGGeometry/Reference ...