zoukankan      html  css  js  c++  java
  • Ubuntu 16.04安装配置vim插件 YouCompleteMe

    linux下折腾了几天,终于把vim插件YouCompleteMe装上了,把安装的步骤整理了一下(Ubuntu16.04系统下)

    安装前准备:

    首先确保自己的vim版本7.3.584+,终端输入:

    vim --v

    然后确保自己的vim支持python,打开vim在normal模式下输入:

    echo has('python')|| has('python3')

    若输出为1,说明支持python;输出为0,则表示不支持。

    若上述条件都满足即可安装YouCompleteMe啦

    1)下载

    git clone --recursive git://github.com/Valloric/YouCompleteMe

    这是会在~/.vim/bundle/目录下出现文件夹YouCompleteMe,

    2)安装.终端分别输入如下命令

    cd ~/.vim/bundle/YouCompleteMe/
    git submodule update --init --recursive
    ./install.py --clang-completer

    若中途不报错的话,说明安装成功了。为了能够vim调用YouCompleteMe,还需对vimrc进行配置。

    (安装的时候添加参数:--clang-completer,YouCompleteMe会自动下载clang并进行安装,网上很多资料都是自己下载clang,但是安装的时候总报错)

    3)配置如下:

    .vimrc中加入

    " YouCompleteMe
    set runtimepath+=~/.vim/bundle/YouCompleteMe
    let g:ycm_collect_identifiers_from_tags_files = 1           " 开启 YCM 基于标签引擎
    let g:ycm_collect_identifiers_from_comments_and_strings = 1 " 注释与字符串中的内容也用于补全
    let g:syntastic_ignore_files=[".*.py$"]
    let g:ycm_seed_identifiers_with_syntax = 1                  " 语法关键字补全
    let g:ycm_complete_in_comments = 1
    let g:ycm_confirm_extra_conf = 0
    let g:ycm_key_list_select_completion = ['<c-n>', '<Down>']  " 映射按键, 没有这个会拦截掉tab, 导致其他插件的tab不能用.
    let g:ycm_key_list_previous_completion = ['<c-p>', '<Up>']
    let g:ycm_complete_in_comments = 1                          " 在注释输入中也能补全
    let g:ycm_complete_in_strings = 1                           " 在字符串输入中也能补全
    let g:ycm_collect_identifiers_from_comments_and_strings = 1 " 注释和字符串中的文字也会被收入补全
    let g:ycm_global_ycm_extra_conf='~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py'
    let g:ycm_show_diagnostics_ui = 0                           " 禁用语法检查
    inoremap <expr> <CR> pumvisible() ? "<C-y>" : "<CR>" |            " 回车即选中当前项
    nnoremap <c-j> :YcmCompleter GoToDefinitionElseDeclaration<CR>|     " 跳转到定义处
    "let g:ycm_min_num_of_chars_for_completion=2                 " 从第2个键入字符就开始罗列匹配项

    其中 ~/.vim/bundle/YouCompleteMe 为下载 YouCompleteMeu 的路径。

    YouCompleteMe能补全C, C++,Python等多种语言,在~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra.conf.py 55行参数 

    ‘-x’
    'c'

    这里指明用的是什么语言,若为C++,则将c改为c++即可,此外为了能够完整补全头文件,终端输入

    echo | clang -v -E -x c -

    会输出一些包含include的路径,比如输出如下:

     /usr/local/bin/../lib/gcc/i686-pc-linux-gnu/4.8.1/../../../../include/c++/4.8.1
     /usr/local/bin/../lib/gcc/i686-pc-linux-gnu/4.8.1/../../../../include/c++/4.8.1/i686-pc-linux-gnu
     /usr/local/bin/../lib/gcc/i686-pc-linux-gnu/4.8.1/../../../../include/c++/4.8.1/backward
     /usr/local/include
     /usr/local/bin/../lib/clang/3.6.2/include
     /usr/include

    将这些路径加入到~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra.conf.py中的参数flags下加入方式如下:

    '-isystem',
     '/usr/local/bin/../lib/gcc/i686-pc-linux-gnu/4.8.1/../../../../include/c++/4.8.1',
     '-isystem',
     '/usr/local/bin/../lib/gcc/i686-pc-linux-gnu/4.8.1/../../../../include/c++/4.8.1/i686-pc-linux-gnu',
     '-isystem',
     '/usr/local/bin/../lib/gcc/i686-pc-linux-gnu/4.8.1/../../../../include/c++/4.8.1/backward',
     '-isystem',
     '/usr/local/include',
     '-isystem',
     '/usr/local/bin/../lib/clang/3.6.2/include',
     '-isystem',
     '/usr/include',

     并注释掉下面这一段

    try:
      final_flags.remove( ‘-stdlib-libc++‘ )
    except ValueError:
      pass

    4)使用

    现在就可以使用神奇的补全神器YouCompleteMe啦

    • 默认当键入两个字母之后, 则启动补全. 可以通过该变量调整: g:ycm_min_num_of_chars_for_completion
    • 也可以使用原有的<c-x><c-o>来补全, ycm将其功能增强了.
    • 按照本文配置, 可用<c-j>跳转到定义处.
    • 默认配置<TAB>会选择补全内容, 本文的配置将其屏蔽了, 为了不会与snipmate等需要tab的冲突, 选择补全改为了.

    参考博文:

    http://www.linuxidc.com/Linux/2015-07/120352.htm

    http://www.mikewootc.com/wiki/tool/sw_develop/vim_ycm_ubuntu_1604.html

  • 相关阅读:
    k8s网络策略
    二进制部署Kubernetes
    宿主机的命令在容器中使用
    高可用示例
    企业级高可用Harbor 2.3
    openstack常用shell脚本
    shell实现jumpserver
    我曾七次鄙视自己的灵魂
    queue容器适配器模拟超市结账环节
    stack容器适配器实现计算器(含实现代码)
  • 原文地址:https://www.cnblogs.com/kuangsyx/p/8022662.html
Copyright © 2011-2022 走看看