【转】ubuntu 12.04 下 Vim 插件 YouCompleteMe 的安装
原文网址: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 的安装相关推荐
- Ubuntu 12.04 下编译Android 4.0.3
在Ubuntu 12.04 下编译了Android 4.0.3发现了一大堆错误,网上找了一堆的更改源码啊,Android.mk的解决方法,虽然可以编译成功,但都有点坑爹的成分,为了不误人子弟就分享出来 ...
- linux ubuntu 12.04 下默认是安装了openjdk的
ubuntu 12.04 下默认是安装了openjdk的,不过这个jdk问题比较多,因为你甚至无法启动Eclipse,所以还是需要自己安装jdk的. 1.下载jdk6 jdk6下载地址为:http:/ ...
- Ubuntu 12.04下安装Oracle Express 11gR2
Ubuntu 12.04下安装Oracle Express 11gR2 [我的笔记] 参考1:http://www.linuxidc.com/Linux/2012-09/71382.htm 参考2:h ...
- Ubuntu 12.04下搭建Web服务器 (MySQL+PHP+Apache)(转)
看了网上很多关于用linux操作系统搭建网站服务器的教程,于是我自己也测试了很多,但今天所测试的 Ubuntu 12.04下搭建Web网站服务器 (MySQL+PHP+Apache环境),感觉这个适合 ...
- 3070网卡驱动linux教程,Ubuntu 12.04下RT5370无线网卡驱动安装
之前买了个水星150U的无线网卡,一直没在Ubuntu下安装好驱动?今天再次在Ubuntu 12.04下尝试安装尽然成功了.以前我一直以为是RT2870的芯片的,今天拆开了一看原来是5370N,晕到R ...
- Ubuntu 12.04下安装极点五笔输入法
Ubuntu 12.04下安装极点五笔输入法 刚刚安装好了 Ubuntu 12.04,但是没有五笔的日子实在不好过,WINDOWS下用习惯了极点五笔,本以为极点的作者不出Linux版的,结果在 ...
- ubuntu 12.04解决Broadcom STA无线网卡驱动安装失败解决
ubuntu 12.04解决Broadcom STA无线网卡驱动安装失败解决 首先,打开终端并输入:ls -nn | grep 0280查看网卡的PCI.ID, 我的是:03:00.0 Network ...
- linux如何安装vi命令,Ubuntu 16.04 下 Vim安装及配置
Ubuntu 16.04 下安装Vim 默认已经安装了VIM-tiny linuxidc@linuxidc:~$ locate vi | grep 'vi$' |xargs ls -al lrwxrw ...
- Andorid开发学习---ubuntu 12.04下搭建超好用的安卓模拟器genymotion 安装卸载virtualbox 4.3...
什么是Genymotion? Genymotion是一套完整的工具,它提供了Android虚拟环境.它简直就是开发者.测试人员.推销者甚至是游戏玩家的福音. Genymotion支持Windows.L ...
最新文章
- android Timer与TimerTask的相关操作
- 深潜百米,采用半缆通信技术的Gladius水下无人机能够征服海洋吗?
- grub配置文件丢失的情况下修复
- linux系统下c语言编程的,Linux操作系统下C语言编程从零开始
- python随机数模块_python 随机数模块 -- random
- oracle 主键约束复制,Oracle主键及约束
- python中int input_python中的input是什么
- 2 字符串求交集_PostGIS教程十八:维数扩展的9交集模型
- phpcms authkey生成算法问题导致authkey泄露
- 【重难点】【Redis 01】为什么使用 Redis、Redis 的线程模型、Redis 的数据类型及其底层数据结构
- 微信JSAPI模式与浏览器类型安全访问
- 7.企业应用架构模式 --- 分布策略
- MXY---Docker
- 广州的11个辖区_13张地形图,快速了解广东省广州市的11个市辖区
- modbus tcp调试助手_集成20几个功能的电气调试软件大放送,永久免费、持续升级...
- 计算机芯片级维修包括哪些,计算机芯片级维修1
- firefox 无法启动
- AndroidStudio Launching ‘app‘ Time out 错误
- 2022年茶艺师(中级)考试题库模拟考试平台操作
- PHP 家长互助解决问题步骤,小区父母互助 完善自己做合格家长
热门文章
- 给网站管理员的建议:创建可利用的、可抓取的网站
- C#“装箱”(boxing)与“拆箱”(unboxing)
- Linux内存管理大图(第三稿)
- Windows7上配置Python Protobuf 操作步骤
- 【Qt】通过QtCreator源码学习Qt(一):pro文件
- java 跨年 周计算公式_如何跨年计算 两日期之间相隔的周数 with java8 time API
- 爬虫python爬取页面请求_Python网络爬虫第三弹《爬取get请求的页面数据》
- named 客户端无法解析_解析天联高级版客户端无法访问用友U8问题
- 联机分析处理系统与联机事务处理系统的区别和联系_混合事务分析处理“HTAP”的技术要点分析...
- Android Linux 9,linux学习(一)(ubuntu9.10 玩转android)