原文网址:http://www.cnblogs.com/jostree/p/4137402.html

作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4137402.html

1.需要保证vim的版本大于7.3.584,否则的话需要更新vim

可以通过第三方源更新:

在终端输入下面的代码:

$ sudo add-apt-repository ppa:fcwu-tw/ppa
$ sudo apt-get update
$ sudo apt-get install vim

升级得到vim7.4

2.需要有clang3.2以上的库

可以再此处下载:http://llvm.org/releases/download.html

可以下载已经变编译好的clang3.4,并注意操作系统版本

3.安装vundle插件

git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle

并配置.vimrc

set nocompatible "与vi不一致
filetype off
set rtp+=~/.vim/bundle/vundle/ "载入特定目录插件
"set rtp+=$HOME/.vim/bundle/vundle/ "Windows下
call vundle#rc()
"plugin
"vimscripts账号下的项目直接填写名称即可
Bundle 'snipMate'
"其它需填写用户/资源名称
Bundle 'gmarik/vundle'
"非github上资源
Bundle 'git://git.wincent.com/command-t.git'
"indent
Bundle 'php.vim-html-enhanced'
"color
Bundle 'Lucius'
filetype plugin indent on  

4.利用vundle插件安装YouCompleteMe和syntastic插件:

在.vimrc中添加

Bundle 'https://github.com/Valloric/YouCompleteMe.git'
Bundle 'https://github.com/scrooloose/syntastic.git'

然后在vim中执行:Vundle Install!

即可安装好这两个插件,安装YouCompleteMe的过程很漫长

可以直接在~/.vim/bundle/目录下,执行:

sudo git clone https://github.com/Valloric/YouCompleteMe.git
sudo git submodule update --init --recursive

也可以得到同样的效果。其中第二行是递归的更新子文件夹的内容。

5.编译YouCompleteMe插件

首先需要安装CMAKE

sudo apt-get install cmake

然后在家目录下建立一个ycm_build文件夹

cd ~
mkdir ycm_build
cd ycm_build

然后cmke使用cmake命令生成makefile文件:

cmake -G "Unix Makefiles" -DPATH_TO_LLVM_ROOT=~/ycm_temp/llvm_root_dir . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp

此处需要注意的是需要修改DPATH_TO_LLVM_ROOT=~/ycm_temp/llvm_root_dir,令其等于clang3.4的路径。

然后make编译

make ycm_support_libs

即可生成编译后的库文件。

最后回到YouCompleteMe目录下:

执行

cd ~/.vim/bundle/YouCompleteMe
./install.sh --clang-completer --system-clang 

即可完成。

6.配置自动补全python脚本:

在~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/路径下的.ycm_extra_conf.py文件中

删除.ycm_extra_conf.py中的

# NOTE: This is just for YouCompleteMe; it's highly likely that your project
# does NOT need to remove the stdlib flag. DO NOT USE THIS IN YOUR
# ycm_extra_conf IF YOU'RE NOT 100% YOU NEED IT.
try:
final_flags.remove( '-stdlib=libc++' )
except ValueError:
pass

将之删除后YCM才会补全c++标准库的内容。

并添加

'/usr/include',
'-isystem',
'/usr/include/c++/'

到flags列表中使其可以补C++库中的头文件。

7.最终更改~/.vimrc的配置文件:

set nocompatible               " be iMproved
filetype off                   " required!set rtp+=~/.vim/bundle/vundle/
call vundle#rc()" let Vundle manage Vundle
" required!
Bundle 'gmarik/vundle'" My Bundles here:
"
" original repos on githubBundle 'tpope/vim-fugitive'
Bundle 'Lokaltog/vim-easymotion'
Bundle 'rstacruz/sparkup', {'rtp': 'vim/'}
Bundle 'tpope/vim-rails.git'
" vim-scripts repos
Bundle 'L9'
Bundle 'FuzzyFinder'
" non github repos
Bundle 'git://git.wincent.com/command-t.git'
" My plugin
Bundle 'perl-support.vim'
Bundle 'ctags.vim'
Bundle 'taglist.vim'
Bundle 'https://github.com/Lokaltog/vim-powerline.git'
Bundle 'LaTeX-Suite-aka-Vim-LaTeX'
Bundle 'Simple-R-Omni-Completion'
"Bundle 'Pydiction'
Bundle 'The-NERD-tree'
Bundle 'Tagbar'
Bundle 'asins/vimcdoc'
Bundle 'cpp.vim'
Bundle 'c.vim'
Bundle 'code_complete'
Bundle 'autoproto.vim'
Bundle 'a.vim'
Bundle 'pyflakes.vim'
Bundle 'Conque-Shell'
Bundle 'python.vim'
Bundle 'multvals.vim'
Bundle 'gdbvim'
Bundle 'glib.vim'
Bundle 'VimIM'
Bundle 'OmniCppComplete'
Bundle 'echofunc.vim'
"Bundle 'clang-complete'
"Bundle 'pythoncomplete'
Bundle 'minibufexpl.vim'
Bundle 'https://github.com/Valloric/YouCompleteMe.git'
Bundle 'https://github.com/scrooloose/syntastic.git'
"Bundle 'https://github.com/Valloric/ListToggle.git'"Bundle 'Valloric/YouCompleteMe'"Bundle 'qiushibaike'
filetype plugin indent on     " required!"
" Brief help  -- 此处后面都是vundle的使用命令
" :BundleList          - list configured bundles
" :BundleInstall(!)    - install(update) bundles
" :BundleSearch(!) foo - search(or refresh cache first) for foo
" :BundleClean(!)      - confirm(or auto-approve) removal of unused bundles
"
" see :h vundle for more details or wiki for FAQ
" NOTE: comments after Bundle command are not allowed..
"
"set nocompatible  "去掉讨厌的有关vi一致性模式,避免以前版本的一些bug和局限
set showmatch
set matchtime=1
set autowrite
set ruler                   " 打开状态栏标尺
set cursorline              " 突出显示当前行
nnoremap <F2> :g/^\s*$/d<CR>
set laststatus=1     "启动显示状态行(1),总是显示状态行(2)
set foldenable      " 允许折叠
"set foldmethod=indent   " 手动折叠
set nu
set fileencodings=utf-8,ucd-bom,gb18030,gbk,gb2312,cp936
set tabstop=4
set sts=4
set expandtab
set softtabstop=4
set shiftwidth=4
set autoindent
set cindent
set cinoptions={0,1s,t0,n-2,p2s,(03s,=.5s,>1s,=1s,:1s
colorscheme desert
set nobackup
set textwidth=100
map <F5> :! /usr/bin/python %
map <F6> :call CompileRunGpp()<CR>""""""""""syntastic""""""""""""
let g:syntastic_check_on_open = 1
let g:syntastic_cpp_include_dirs = ['/usr/include/']
let g:syntastic_cpp_remove_include_errors = 1
let g:syntastic_cpp_check_header = 1
let g:syntastic_cpp_compiler = 'clang++'
let g:syntastic_cpp_compiler_options = '-std=c++11 -stdlib=libstdc++'
"set error or warning signs
let g:syntastic_error_symbol = "✗"
let g:syntastic_warning_symbol = "⚠"
"whether to show balloons
let g:syntastic_enable_balloons = 1
let g:syntastic_always_populate_loc_list = 1nnoremap <silent> <C-d> :lclose<CR>:bdelete<CR>
cabbrev <silent> bd lclose\|bdelete""""""""""""YCM""""""""""""""""""""
let g:ycm_global_ycm_extra_conf = '~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py'
let g:ycm_collect_identifiers_from_tags_files = 1
let g:ycm_seed_identifiers_with_syntax = 1
let g:ycm_confirm_extra_conf = 0
let g:ycm_always_populate_location_list = 1
let g:ycm_min_num_of_chars_for_completion = 2
let g:ycm_complete_in_comments = 1nnoremap <leader>jd :YcmCompleter GoToDefinitionElseDeclaration<CR>
nnoremap <leader>lo :lopen<CR>"minibufexpl
"{
let g:miniBufExplMapCTabSwitchBufs = 1
let g:miniBufExplMapWindowNavVim = 1
"}
"
"pydiction
"{
"filetype plugin on
"let g:pydiction_location='~/.vim/bundle/Pydiction/complete-dict'
"}
"" OmniCppComplete
"" {
" "-- omnicppcomplete setting --
"    " 按下F3自动补全代码,注意该映射语句后不能有其他字符,包括tab;否则按下F3会自动补全一些乱码
"    imap <F3> <C-X><C-O>
"    " 按下F2根据头文件内关键字补全
"    imap <F2> <C-X><C-I>" set completeopt=menu,menuone " 关掉智能补全时的预览窗口
"    let OmniCpp_MayCompleteDot = 1 " autocomplete with .
"    let OmniCpp_MayCompleteArrow = 1 " autocomplete with ->
"    let OmniCpp_MayCompleteScope = 1 " autocomplete with ::
"    let OmniCpp_SelectFirstItem = 2 " select first item (but don't insert)
"    let OmniCpp_NamespaceSearch = 2 " search namespaces in this and included files
"    let OmniCpp_ShowPrototypeInAbbr = 1 " show function prototype in popup window
"    let OmniCpp_GlobalScopeSearch=1 " enable the global scope search
"    let OmniCpp_DisplayMode=1 " Class scope completion mode: always show all members"let OmniCpp_DefaultNamespaces=["std"]
"    let OmniCpp_ShowScopeInAbbr=1 " show scope in abbreviation and remove the last column
"    let OmniCpp_ShowAccess=1
"    set tags+=/usr/include/c++/tags  "need to  ctags -R --c++-kinds=+p --fields=+iaS --extra=+q
" }
" echofunc.vim
" {
" }
"vimIM
"{
let g:vimim_cloud='sogou'
let g:vimim_map='tab_as_onekey'
let g:vimim_map='no-gi'
let g:vimim_map_extra='ctrl_h_as_ctrl_bslash'
"let g:vimim_static_input_style=1
let g:vimim_toggle = 'pinyin,sogou,baidu'
let g:vimim_plugin = '/home/liuyi/.vim/bundle/VimIM/plugin'
"}
"
"" Bundle 'clang-complete'
"" {
"let g:clang_auto_select = 1
"let g:clang_complete_copen=1
"let g:clang_periodic_quickfix=1
"let g:clang_snippets=1
"let g:clang_snippets_engine = 'clang_complete'
"let g:clang_close_preview=1
"let g:clang_use_library=1
"let g:clang_user_options='-stdlib=libc++ -std=c++11 -IIncludePath'
"let g:neocomplcache_enable_at_startup = 1
"" }
"pyflakes python语法分析
"{
"filetype plugin indent on
"}
"python_complete
"{
set ofu=syntaxcomplete
autocmd FileType python
set omnifunc=pythoncomplete
"autocmd FileType python runtime! autoload/pythoncomplete.vim
"}
"
"tagbar
"{
"nmap <Leader>tb :TagbarToggle<CR>
map <F8> :TagbarToggle<CR>
imap <F8> <ESC>:NERDTreeToggle<CR>
let g:tagbar_ctags_bin='/usr/bin/ctags'
let g:tagbar_width=30
autocmd BufReadPost *.cpp, *.c, *.h, *.hpp, *.cc, *.cxx call tagbar#autoopen()
"}"omni-completion
"{
"autocmd FileType python set omnifunc=pythoncomplete#Complete
"let g:pydiction_location='~/.vim/bundle/Pydiction/complete-dict'
filetype plugin on
"}"taglist
"{
let Tlist_Auto_Highlight_Tag=1
"let Tlist_Auto_Open=1
let Tlist_Auto_Update=1
let Tlist_Display_Tag_Scope=1
let Tlist_Exit_OnlyWindow=1
let Tlist_Enable_Dold_Column=1
"let Tlist_File_Fold_Auto_Close=1
let Tlist_Show_One_File=1
let Tlist_Use_Right_Window=1
let Tlist_Use_SingleClick=1
"nnoremap <Leader>tl :TlistToggle<CR>
"设定F8为taglist开关
"}"Nerd-tree
"{
map <F7> :NERDTreeToggle<CR>
imap <F7> <ESC>:NERDTreeToggle<CR>
"}"WinManager
"{
let g:winManagerWindowLayout='FileExplorer|BufExplorer'  " 这里可以设置 为多个窗口,  如'FileExplorer|BufExplorer|TagList'
let g:persistentBehaviour=0             " 只剩一个窗口时,  退出vim.
let g:winManagerWidth=20
let g:defaultExplorer=1
nmap <leader>fir :FirstExplorerWindow<cr>
nmap <leader>bot :BottomExplorerWindow<cr>
nmap <leader>wm :WMToggle<cr>
"}
"
runtime! ftplugin/man.vimset hlsearch
set autoindent                  " copy indent from current line
set autoread                    " read open files again when changed outside Vim
set autowrite                   " write a modified buffer on each :next , ...
set backspace=indent,eol,start  " backspacing over everything in insert mode
"set backup                      " keep a backup file
set browsedir=current           " which directory to use for the file browser
set complete+=k                 " scan the files given with the 'dictionary' option
set history=50                  " keep 50 lines of command line history
set hlsearch                    " highlightthe last used search pattern
set incsearch                   " do incremental searching
set listchars=tab:>.,eol:\$     " strings to use in 'list' mode
set mouse=a                     " enable the use of the mouse
set wrap                      "   wrap lines
set popt=left:8pc,right:3pc     " print options
set ruler                       " show the cursor position all the time
"set shiftwidth=2                " number of spaces to use for each step of indent
set showcmd                     " display incomplete commands
set smartindent                 " smart autoindenting when starting a new line
"set tabstop=2                   " number of spaces that a <Tab> counts for
set visualbell                  " visual bell instead of beeping
set wildignore=*.bak,*.o,*.e,*~ " wildmenu: ignore these extensions
set wildmenu                    " command-line completion in an enhanced mode
set formatoptions=tcrqn
"
"-------------------------------------------------------------------------------
"  highlight paired brackets
"-------------------------------------------------------------------------------
highlight MatchParen ctermbg=blue guibg=lightyellowinoremap  ,  ,<Space>
"
"-------------------------------------------------------------------------------
" autocomplete parenthesis, (brackets) and braces
"-------------------------------------------------------------------------------
inoremap  (  ()<Left>
inoremap  [  []<Left>
inoremap  {  {}<Left>
"
vnoremap  (  s()<Esc>P<Right>%
vnoremap  [  s[]<Esc>P<Right>%
vnoremap  {  s{}<Esc>P<Right>%
"
" surround content with additional spaces
"
vnoremap  )  s(  )<Esc><Left>P<Right><Right>%
vnoremap  ]  s[  ]<Esc><Left>P<Right><Right>%
vnoremap  }  s{  }<Esc><Left>P<Right><Right>%
set vb t_vb="
" vim-powerline
set laststatus=2
set t_Co=256
let g:Powerline_symbols = 'unicode'
set encoding=utf8"vimcdoc
"{
set helplang=cn
"}"shift tab page
"{map <S-Left> :tabp<CR>map <S-Right> :tabn<CR>
"}

【转】ubuntu 12.04 下 Vim 插件 YouCompleteMe 的安装相关推荐

  1. Ubuntu 12.04 下编译Android 4.0.3

    在Ubuntu 12.04 下编译了Android 4.0.3发现了一大堆错误,网上找了一堆的更改源码啊,Android.mk的解决方法,虽然可以编译成功,但都有点坑爹的成分,为了不误人子弟就分享出来 ...

  2. linux ubuntu 12.04 下默认是安装了openjdk的

    ubuntu 12.04 下默认是安装了openjdk的,不过这个jdk问题比较多,因为你甚至无法启动Eclipse,所以还是需要自己安装jdk的. 1.下载jdk6 jdk6下载地址为:http:/ ...

  3. Ubuntu 12.04下安装Oracle Express 11gR2

    Ubuntu 12.04下安装Oracle Express 11gR2 [我的笔记] 参考1:http://www.linuxidc.com/Linux/2012-09/71382.htm 参考2:h ...

  4. Ubuntu 12.04下搭建Web服务器 (MySQL+PHP+Apache)(转)

    看了网上很多关于用linux操作系统搭建网站服务器的教程,于是我自己也测试了很多,但今天所测试的 Ubuntu 12.04下搭建Web网站服务器 (MySQL+PHP+Apache环境),感觉这个适合 ...

  5. 3070网卡驱动linux教程,Ubuntu 12.04下RT5370无线网卡驱动安装

    之前买了个水星150U的无线网卡,一直没在Ubuntu下安装好驱动?今天再次在Ubuntu 12.04下尝试安装尽然成功了.以前我一直以为是RT2870的芯片的,今天拆开了一看原来是5370N,晕到R ...

  6. Ubuntu 12.04下安装极点五笔输入法

    Ubuntu 12.04下安装极点五笔输入法     刚刚安装好了 Ubuntu 12.04,但是没有五笔的日子实在不好过,WINDOWS下用习惯了极点五笔,本以为极点的作者不出Linux版的,结果在 ...

  7. ubuntu 12.04解决Broadcom STA无线网卡驱动安装失败解决

    ubuntu 12.04解决Broadcom STA无线网卡驱动安装失败解决 首先,打开终端并输入:ls -nn | grep 0280查看网卡的PCI.ID, 我的是:03:00.0 Network ...

  8. linux如何安装vi命令,Ubuntu 16.04 下 Vim安装及配置

    Ubuntu 16.04 下安装Vim 默认已经安装了VIM-tiny linuxidc@linuxidc:~$ locate vi | grep 'vi$' |xargs ls -al lrwxrw ...

  9. Andorid开发学习---ubuntu 12.04下搭建超好用的安卓模拟器genymotion 安装卸载virtualbox 4.3...

    什么是Genymotion? Genymotion是一套完整的工具,它提供了Android虚拟环境.它简直就是开发者.测试人员.推销者甚至是游戏玩家的福音. Genymotion支持Windows.L ...

最新文章

  1. android Timer与TimerTask的相关操作
  2. 深潜百米,采用半缆通信技术的Gladius水下无人机能够征服海洋吗?
  3. grub配置文件丢失的情况下修复
  4. linux系统下c语言编程的,Linux操作系统下C语言编程从零开始
  5. python随机数模块_python 随机数模块 -- random
  6. oracle 主键约束复制,Oracle主键及约束
  7. python中int input_python中的input是什么
  8. 2 字符串求交集_PostGIS教程十八:维数扩展的9交集模型
  9. phpcms authkey生成算法问题导致authkey泄露
  10. 【重难点】【Redis 01】为什么使用 Redis、Redis 的线程模型、Redis 的数据类型及其底层数据结构
  11. 微信JSAPI模式与浏览器类型安全访问
  12. 7.企业应用架构模式 --- 分布策略
  13. MXY---Docker
  14. 广州的11个辖区_13张地形图,快速了解广东省广州市的11个市辖区
  15. modbus tcp调试助手_集成20几个功能的电气调试软件大放送,永久免费、持续升级...
  16. 计算机芯片级维修包括哪些,计算机芯片级维修1
  17. firefox 无法启动
  18. AndroidStudio Launching ‘app‘ Time out 错误
  19. 2022年茶艺师(中级)考试题库模拟考试平台操作
  20. PHP 家长互助解决问题步骤,小区父母互助 完善自己做合格家长

热门文章

  1. 给网站管理员的建议:创建可利用的、可抓取的网站
  2. C#“装箱”(boxing)与“拆箱”(unboxing)
  3. Linux内存管理大图(第三稿)
  4. Windows7上配置Python Protobuf 操作步骤
  5. 【Qt】通过QtCreator源码学习Qt(一):pro文件
  6. java 跨年 周计算公式_如何跨年计算 两日期之间相隔的周数 with java8 time API
  7. 爬虫python爬取页面请求_Python网络爬虫第三弹《爬取get请求的页面数据》
  8. named 客户端无法解析_解析天联高级版客户端无法访问用友U8问题
  9. 联机分析处理系统与联机事务处理系统的区别和联系_混合事务分析处理“HTAP”的技术要点分析...
  10. Android Linux 9,linux学习(一)(ubuntu9.10 玩转android)