zoukankan      html  css  js  c++  java
  • windows7 Cygwin 下安装 YouCompleteMe 插件

    原创文章,欢迎指正!转载请注明~

    从上周就开始想在cygwin上安装YouCompleteMe插件,按照GITHUB上的官方教程安装,由于自己的理解失误,一直搞不清是按照在windows上安装还是按照在Unix上安装,加上网络又不给力,浪费了许多时间。不断尝试后,发现在cygwin上安装与在window和Unix上安装都不完全相同,网上相关的教程几乎没有,所在在此记录一下经验和教训。

    GITHUB官方安装教程:https://github.com/Valloric/YouCompleteMe#full-installation-guide

    两种方法安装YouCompleteMe插件:

    1. vundle安装YouCompleteMe插件,安装vundle使用git命令(cygwin自带的命令,如果没有就用cygwin的setup.exe安装一下):

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

    配置vundle:打开.vimrc,添加如下内容并保存退出:

    """"""""""""""""""""""""""""""""""""""""""""""Vundle""""""""""""""""""""""""""""""""""
    set nocompatible
    filetype off
    set rtp+=~/.vim/bundle/Vundle  "vundle插件下载到了~/.vim/bundle/Vundle下
    call vundle#rc()
    
    Bundle 'Valloric/YouCompleteMe' "YouCompleteMe托管在github上,使用vundle安装
    
    filetype plugin indent on
    """"""""""""""""""""""""""""""""""""""""""""""Vundle End"""""""""""""""""""""""""""""""

    然后在vim中输入:BundleInstall。如果网速不给力的话,这个过程会比较漫长~,而且有可能安装失败。

    2. 另一种方法直接安装YouCompleteMe插件:

    git clone https://github.com/Valloric/YouCompleteMe.git

    等待下载完成后进入YouCompleteMe目录检查仓库完整性:

    git submodule update --init --recursive

    ......

    等待下载完成后,执行下面命令查看cmake和clang的版本信息,我的cmak版本是3.3.2的而且没有安装clang,用cygwin自带的setup.exe安装一下,注意安装clang时要把libclang也选上:

    cygwin比较快速的镜像比如:

    http://mirrors.163.com/cygwin/

    ftp://ftp.sjtu.edu.cn/sites/cygwin.com/pub/cygwin/

    安装完成后(注意不能在安装中途退出,一定要等setup.exe提示安装完成才可以,不然可能会出现"address space needed by XXX.dll is already occupied"之类的错误):

    $ cmake --version
    cmake version 3.6.2

    CMake suite maintained and supported by Kitware (kitware.com/cmake).

    $ clang --version
    clang version 3.8.1 (tags/RELEASE_381/final)
    Target: x86_64-unknown-windows-cygnus
    Thread model: posix
    InstalledDir: /usr/bin

    在~/新建目录ycm_build并进入,执行:

    cmake -G "Unix Makefiles" -DUSE_SYSTEM_LIBCLANG=ON . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp

     正确的结果如下:

    接着执行:

    cmake --build . --target ycm_core --config Release

    发现错误如下:

    原来是没有安装Boost C++ libraries,用setup.exe安装好,重复执行上一个步骤,又发现错误:

    查看/usr/include/python2.7/目录,发现缺少了许多头文件,用setup.exe安装好python-dev,重复执行上一个步骤,得到了正确的结果。至此我们可以补全C-fimily还有官方文档上说明的那些语言了。

    接下来需要配置.vimrc,官方教程也有配置说明,这里我参考了其他博客:

    http://blog.csdn.net/houzhuoming1/article/details/49990739

    http://www.cnblogs.com/tsingke/p/5325964.html

    在.vimrc中加入以下代码:

    """"""""""""""""""""""""""""""""""""""""""""""ycm"""""""""""""""""""""""""""""""
    let g:ycm_global_ycm_extra_conf='~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra _conf.py'
    
    set foldenable                                        "启用折叠
    set foldmethod=indent                                 "indent 折叠方式
    set foldlevel=9999                                    " 折叠的层次,打开文件时默认不折叠
    
    " 常规模式下用空格键来开关光标行所在折叠(注:zR 展开所有折叠,zM 关闭所有折叠)
    nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR>
    
    " 常规模式下输入 cS 清除行尾空格
    nmap cS :%s/s+$//g<CR>:noh<CR>
    
    " 常规模式下输入 cM 清除行尾 ^M 符号
    nmap cM :%s/
    $//g<CR>:noh<CR>
    
    " Ctrl + K 插入模式下光标向上移动
    imap <c-k> <Up>
    
    " Ctrl + J 插入模式下光标向下移动
    imap <c-j> <Down>
    
    " Ctrl + H 插入模式下光标向左移动
    imap <c-h> <Left>
    
    " Ctrl + L 插入模式下光标向右移动
    imap <c-l> <Right>
    
    " Ctrl + f 光标跳转到行头
    imap <c-f> <ESC>0
    
    set number                                            "显示行号
    set laststatus=2                                      "启用状态栏信息
    set cmdheight=2                                       "设置命令行的高度为2,默认为1
    set cursorline                                        "突出显示当前行
    " set guifont=YaHei_Consolas_Hybrid:h10                 "设置字体:字号(字体名称空格用下划线代替)
    " set nowrap                                            "设置不自动换行
    set shortmess=atI                                     "去掉欢迎界面
    """"""""""""""""""""""""""""""""""""""""""""""ycm End"""""""""""""""""""""""""""""""

    但是打开文件后,会显示:

    处理 function youcompleteme#Enable[66]..50_OnBufferRead 时发生错误
    第17行:
    Traceback (most recent call last):

    这是因为utf-8编码才能被YouCompleteMe插件识别,因此需要在.vimrc中设置encoding;又因为是在windows环境下,还需要设置vim用于屏幕显示的编码termencoding为GBK,不然打开文件后底端的提示会有乱码。

    set encoding=utf-8
    set langmenu=zh_CN.UTF-8
    language message zh_CN.UTF-8
    set termencoding=GBK

    最后在vim中输入:message不再显示有错误。YouCompleteMe具体的用法我也刚刚接触,而且为了打造一个足够舒适的IDE肯定还要安装其他的插件进行补充,网上对于这方面的资料也比较多了,以后慢慢去体会它的强大之处吧。

    -----------------------------------------------------------------分隔线----------------------------------------------------------------------------

    在另外一台机器上装这个插件时,没有打算补全C-family languages,所以直接执行~/.vim/bundle/YouCompleteMe下的install.py,出现了找不到合适的python库的问题,因此可以手动重置~/.vim/bundle/YouCompleteMe/third_party/ycmd/build.py中CustomPythonCmakeArgs函数中的python_library和python_include变量:

    #python_library, python_include = FindPythonLibraries()
    python_library = '/usr/lib/libpython2.7.dll.a' python_include = '/usr/include/python2.7'

    然后运行安装脚本install.py即可。

    最后感谢我们产品四人小组给我的鼓励和支持,让我回想起了那时辛苦又温暖的北漂生活~

  • 相关阅读:
    程序的局部性原理2
    程序的局部性原理
    ROM
    学习Spring Security OAuth认证(一)-授权码模式
    mybatis*中DefaultVFS的logger乱码问题
    maven生命周期绑定要点
    spring security antMatchers相关内容
    JSTL
    什么是CSS hack?
    Java中获得当前静态类的类名
  • 原文地址:https://www.cnblogs.com/wangzhiyi/p/window7_install_YouCompleteMe_in_Cygwin.html
Copyright © 2011-2022 走看看