目的:达到我自己自定义安装插件的目的

安装YCM(YouCompleteMe)自动补全神器之前的准备

先安装编译环境:

1
2
sudo apt-get install build-essential cmake
sudo apt-get install python-dev

在安装之前运行一下命令(后续会知道它的用途):

1
vim .vimrc.before.local

在里面写入如下代码(是我自己的配置):

1
let g:spf13_bundle_groups=['general''writing''programming',  'python''misc''youcompleteme', ]

上面代码会在安装spf13的时候默认根据配置去安装插件。最下面会解释为何要如此配置。

安装git软件(如果你没有安装的话,用来克隆spf13项目):

1
sudo apt-get install git

切换到$HOME目录,然后运行:

1
2
cd $HOME
git clone https://github.com/spf13/spf13-vim.git

克隆好项目后,HOME目录中就会有一个名为“spf13-vim”的文件夹进入这个文件夹,并运行

1
./bootstrap.sh

就会按照自己的配置进行安装了。

YCM编译安装:在全部插件安装完成后(下载YCM的时,可能需要点时间),然后在进行编译安装:

  1. 在编译安装YCM之前,需要Clang和LLVM这个环境进行编译。我们建立一个目录用来存放临时编译的文件,(安装YCM的东东全部在建立的目录下进行执行,执行命令)有两种方式进行安装:第一,使用官方源进行安装

  2. 1
    mkdir ycm_build
  3. 1
    cd ycm_build
  4. apt-get install clang llvm

    第二种,去clang的官方地址上去进行下载并进行安装,编译安装可参考http://howiefh.github.io/2015/05/22/vim-install-youcompleteme-plugin/

    zhongcq博客

http://zuyunfei.com/2013/05/16/killer-plugin-of-vim-youcompleteme/

  1. 我这里只介绍通过官方源进行安装的(因为简单快捷):

  2. 确认安装的包完整性:

  3. 1
    cd ~/.vim/bundle/YoucompleteMe
  4. 1
    git submodule update --init --recursive
  5. 我们需要找到libclang.so的路径在哪里,一般是在/usr/目录下使用一下命令查找

  6. 1
    find /usr/ -name "libclang.so*"

    我查找到的目录为:

    /usr/lib/llvm-3.5/lib/libclang.so.1

  7. 通过官方的知道得知需要运行一下命令

    参考官方解释:

  8. cmake -G "<generator>" . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp

    For those who want to use the system version of boost, you would pass -DUSE_SYSTEM_BOOST=ON to cmake. This may be necessary on some systems where the bundled version of boost doesn't compile out of the box.

  9. 根据官方的解释,我们执行如下语句:

  10. 1
    cmake -G "Unix Makefiles" -DEXTERNAL_LIBCLANG_PATH=/usr/lib/llvm-3.5/lib/libclang.so.1 ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp

然后:

Now that configuration files have been generated, compile the libraries using this command:

cmake --build . --target ycm_support_libs --config Release

直接执行如上语句

cmake --build . --target ycm_support_libs --config Release

使用NeoCompleteEnable出现的如下问题

我使用的是tty1这种终端;

安装完成后发现不能自动提示,在命令模式“:”下输入“NeoCompleteEnable”发现不能启动提示

1
2
3
It requires Vim 7.3.885 or later with Lua support ("+lua")

按照github上的方法安装vim-nox、vim-athena就可以解决问题{传送门}(https://github.com/spf13/spf13-vim/issues/773):(一般只需安装vim-nox[此为脚本语言的支持])

1
2
sudo apt-get install vim-nox
sudo apt-get install vim-athena

自动补全不能只能提示(针对NeoComplete插件)

在使用过程中,自动提示的东西不能显示,还是那种插件形式的。

解决方法{传送门}(https://github.com/spf13/spf13-vim/issues/819):

在.vimrc.loacl中添加如下代码:

1
inoremap <expr><CR> neosnippet#expandable() ? neosnippet#mappings#expand_or_jump_impl() : pumvisible() ? neocomplete#close_popup() : "\<CR>"

 

 

不显示配色效果:

在.vimrc.loacl中添加如下代码【可参考(http://www.cnblogs.com/keepHack/archive/2012/04/09/2439361.html)】:

1
set t_Co=256

 

spf13-vim作者的github中有个这样的文件.vimrc.bundles有着下面这段代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
" In your .vimrc.before.local file
" list only the plugin groups you will use
    if !exists('g:spf13_bundle_groups')
        let g:spf13_bundle_groups=['general''writing''neocomplete''programming''php''ruby''python''javascript''html''misc',]
    endif
 
    " To override all the included bundles, add the following to your
    " .vimrc.bundles.local file:
    "   let g:override_spf13_bundles = 1
    if !exists("g:override_spf13_bundles")
 
    " General {
        if count(g:spf13_bundle_groups, 'general')
            Bundle 'scrooloose/nerdtree'
            Bundle 'altercation/vim-colors-solarized'
            Bundle 'spf13/vim-colors'
            Bundle 'tpope/vim-surround'
            Bundle 'tpope/vim-repeat'
            Bundle 'jiangmiao/auto-pairs'
            Bundle 'ctrlpvim/ctrlp.vim'
            Bundle 'tacahiroy/ctrlp-funky'
            Bundle 'kristijanhusak/vim-multiple-cursors'
            Bundle 'vim-scripts/sessionman.vim'
            Bundle 'matchit.zip'
            if (has("python") || has("python3")) && exists('g:spf13_use_powerline') && !exists('g:spf13_use_old_powerline')
                Bundle 'Lokaltog/powerline', {'rtp':'/powerline/bindings/vim'}
            elseif exists('g:spf13_use_powerline') && exists('g:spf13_use_old_powerline')
                Bundle 'Lokaltog/vim-powerline'
            else
                Bundle 'bling/vim-airline'
            endif
            Bundle 'powerline/fonts'
            Bundle 'bling/vim-bufferline'
            Bundle 'Lokaltog/vim-easymotion'
            Bundle 'jistr/vim-nerdtree-tabs'
            Bundle 'flazz/vim-colorschemes'
            Bundle 'mbbill/undotree'
            Bundle 'nathanaelkane/vim-indent-guides'
            if !exists('g:spf13_no_views')
                Bundle 'vim-scripts/restore_view.vim'
            endif
            Bundle 'mhinz/vim-signify'
            Bundle 'tpope/vim-abolish.git'
            Bundle 'osyo-manga/vim-over'
            Bundle 'kana/vim-textobj-user'
            Bundle 'kana/vim-textobj-indent'
            Bundle 'gcmt/wildfire.vim'
        endif
    " }

这段代码中有下面这段:

1
2
3
4
5
" In your .vimrc.before.local file
" list only the plugin groups you will use
    if !exists('g:spf13_bundle_groups')
        let g:spf13_bundle_groups=['general''writing''neocomplete''programming''php''ruby''python''javascript''html''misc',]
    endif

前面两句是注释,说:在.vimrc.before.local这个文件中列出了你将要使用的插件,下面那句代码意思就是如果不存在设置,那么就会默认使用下面的插件:

1
'general''writing''neocomplete''programming''php''ruby''python''javascript''html''misc'

下面这段(我只截取的部分)是说明,如果spf_bundle_groups包含了general就安装下面的插件

1
2
3
4
5
6
" General {
        if count(g:spf13_bundle_groups, 'general')
            Bundle 'scrooloose/nerdtree'
            Bundle 'altercation/vim-colors-solarized'
            Bundle 'spf13/vim-colors'
            ……………………………………
1
<br>

以下所有的设置都在.vimrc.local中:

设置颜色:set t_Co=256才能正确的显示配色的效果

参考网站:http://harrycode.logdown.com/posts/197145-simple-steps-to-build-cool-vim-development-environment

http://twocucao.xyz/2015/03/01/%E7%BC%96%E8%BE%91%E5%99%A8Vim/

http://www.cnblogs.com/274914765qq/p/4439189.html

https://github.com/Valloric/YouCompleteMe#c-family-semantic-completion-engine-usage

http://www.cnblogs.com/keepHack/archive/2012/04/09/2439361.html

可参考:http://blog.jobbole.com/58978/

可参考:k-vim进行自己的配置设置

后续遇到的问题,会继续添加

使用vim配置方案spf13中碰到的一些问题的更多相关文章

  1. 简洁vim配置方案Janus(1)

    最近不想在编辑器上花太多的精力,所以找到个不错的解决方案. 在不懂vim配置的前提下也能用的很开心. 1,下载安装Janus(https://github.com/carlhuda/janus) 安装 ...

  2. Github上star和fork比较高的vim配置方案

    https://github.com/amix/vimrchttps://github.com/humiaozuzu/dot-vimrchttps://github.com/spf13/spf13-v ...

  3. 配置使用ldap中碰到的各种问题 --- 吐血

    1.   LDAP Result Code 50 "Insufficient Access Rights" : 权限的问题: 解决: 使用docker部署吧, 看我其他的博客

  4. gVim 配置方案 采用Vundle管理插件

    在Linux下配置vim非常简单,尤其是采用Vundle来管理插件,使得一切用起来得心应手. Maple大神在github上公布了自己的vim配置方案,相当方便好用.详见 https://github ...

  5. Vim常用命令及配置方案

    Vim常用命令及配置方案   几句话 很久之前就接触到vim,初学那阵觉得vim很酷炫,但确实对新手不是很友好.我也就简单看了下基本操作就上手了,但又不是长期在vim下工作,这就导致了每一次重新使用v ...

  6. web.config中sessionState节点的配置方案

    web.config中sessionState节点的配置方案 web.config关于sessionState节点的配置方案,sessionState有五种模式:Custom,off,inProc,S ...

  7. Nginx+Php中限制站点目录防止跨站的配置方案记录

    Nginx+Php中限制站点目录防止跨站的配置方案记录(使用open_basedir)-------------------方法1)在Nginx配置文件中加入: 1 fastcgi_param  PH ...

  8. Vim配置(python版)

    由于马上将用到django框架,需要有一个好的ide来coding,之前做C的开发时候体会到了vim的强大,所以编写python也决定采用vim. PS:除了vim,一般浏览代码多用atom和subl ...

  9. acm的ubuntu (ubuntu16.04 安装指南,chrome安装,vim配置,git设置和github,装QQ)

    日常手贱把ubuntu14.04更新到了16.04,然后就game over了.mdzz,不然泥萌也看不到这篇博客了=.= 然后花了些时间重装了一个16.04版的,原来那个14.04的用可以用,就是动 ...

随机推荐

  1. C#泛型回顾点滴

    前言 C#的泛型一直是学习者津津乐道的课题了,这确实是一个非常有用的特性,不过在实际使用中,还是有很多需要注意的地方,我们需要通过自己动手实践以及结合理论进行理解,最终总结出自己的编码规范和最佳实践 ...

  2. wcf事务(随记)

    ----------------------------------------------------wcf事务:1.ACID:原子性.一致性.隔离性.持久性:2.事务:添加命名空间(using S ...

  3. ASP.NET MVC路由(5)

    ASP.NET MVC路由(五) 前言 前面的篇幅讲解了MVC中的路由系统,只是大概的一个实现流程,让大家更清晰路由系统在MVC中所做的以及所在的位置,通过模糊的概念描述.思维导图没法让您看到路由的实 ...

  4. web开发人员

    随笔- 4  文章- 18  评论- 12  [译]作为一个web开发人员,哪些技术细节是在发布站点前你需要考虑到的   前日在cnblogs上看到一遍文章<每个程序员都必读的12篇文章> ...

  5. iOS基础 - 控制器

    一.当两个控制器互为父子关系的时候,它们的view一般也是互为父子关系 比如想添加A控制器的view到B控制器的view上,就应该让A控制器成为B控制器的子控制器,而B控制器就称为A控制器的父控制器 ...

  6. 分享一个C#自定义事件的实际应用

    在C#.NET的开发中,事件是经常接触到的概念,比如为按钮添加点击事件,并写入点击按钮触发事件要运行的代码.不管是ASP.NET还是WinForm等各种形式的应用程序,最经常是为系统生成的事件写具体代 ...

  7. Easyui布局

    Easyui入门视频教程 第03集---Easyui布局 Easyui入门视频教程 第03集---Easyui布局 目录 -----------------------   Easyui入门视频教程 ...

  8. Stimulsoft.Report.net报表简单实用

    1 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System. ...

  9. data格式加载图片

    html img 使用data格式加载图片   背景 这久闲来无事给一位客户测试一款体检软件,是winform结构的,其中有一个功能是需要把生成的体检报告导出为html格式.测试导出后直接在谷歌浏览器 ...

  10. LigerUI权限系统之角色管理

    角色管理比前面几个页面都稍显复杂点.好吧,还是先看图. 左边是角色列表,右边是页面列表,它们也是多对多的关系,即一个角色可以访问多个页面,同时一个页面也可以被多个角色访问. 点击左边的角色,刷新右边页 ...