331. Windows10安装WSL;Ubuntu安装Youcompleteme

第一步:安装wsl

  • 离线安装方法:
    在win10的设置中打开更新和安全,打开针对开发人员选项
    然后在程序和功能中打开Linux子系统。
    在命令行中输入bash
    最新版win10(17年9月更新)会给出应用商店的地址,下载速度很快。

旧版的win10可以参考下面的内容安装bash。
http://www.cnblogs.com/VAllen/archive/2017/04/03/BashOnWindowsDownloadAndInstallError.html
推荐选择16.04的ubuntu。

注意:在windows10上修改ubuntu的文件,必须通过命令行实现。将文件直接拷进ubuntu的分区可能会出现权限问题。即在windows上能看到文件,在ubuntu的ls命令下却不显示。可能跟windows用户不是Adminastator有关。

第二步:安装wsl terminal(一个好用的命令行)

  • 下载WSL:
    https://github.com/goreliu/wsl-terminal/releases
    有时候会下载失败,可以试试以前的版本,差别不是很大。

  • 在鼠标右键添加Open WSL Here
    在wsl程序目录下,有个tools目录,运行其中的1-add-open-wsl-terminal-here-menu。(删除则运行1-remove开头的脚本)

第三步:获取root权限

使用鼠标右键中的Open WSL Here打开Bash。

  • 更新root密码:
    sudo passwd

第四步:更换软件源(apt源和pip源)

  • 更换apt源:
cd /etc/apt/
sudo cp sources.list sources.list.bak && sudo vim sources.list

删除其中所有内容,替换成:

#deb包
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse  
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse  
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse  
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse  
##测试版源  
deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse  
# 源码  
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse  
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse  
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse  
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse  
##测试版源  
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse  
# Canonical 合作伙伴和附加  
deb http://archive.canonical.com/ubuntu/ xenial partner  
deb http://extras.ubuntu.com/ubuntu/ xenial main  
sudo apt update && sudo apt upgrade
  • 修改pip源:
    创建pip配置文件:
    mkdir ~/.pip && vi ~/.pip/pip.conf
    在打开的vim中输入下文并保存:
[global]
trusted-host=mirrors.aliyun.com
index-url=http://mirrors.aliyun.com/pypi/simple/

第五步:安装zsh

  • 安装zsh:
    sudo apt install zsh

  • 安装oh-my-zsh:
    sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

  • 切换zsh:
    chsh -s /bin/zsh

第六步:修改.vimrc,添加molakai主题

  • 复制配置好的vimrc(仅限作者)
    cp /mnt/d/.vimrc ~/.vimrc

使用旧版的.vimrc后,出现进入vim没有配色的情况。
这是因为vundle在vimrc中的配置是filetype off,关掉即可。
当需要使用vundle的时候再打开这个选项。

  • 复制vim的molokai配色(仅限作者)
mkdir -p ~/.vim/colors && cp /mnt/d/molokai.vim  ~/.vim/colors/molokai.vim

第七步:安装Vundle和Youcompleteme

  • 下载Vundle:
    git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

  • VIm命令行中安装YCM:
    :PluginInstall

  • 还需要在vimrc中配置Vundle:

因为YCM包比较大,所以需要等很久,安装完成后提示错误,这是正常的,因为ycm需要手工编译出YCM core库。

第八步:编译YCM core

  1. 安装cmake和g++编译器:
    sudo apt install cmake build-essential

  2. 安装python3-dev(使用python2.7时安装python-dev):
    sudo apt install python3-dev

  3. 切换到YCM目录:
    cd ~/.vim/bundle/YouCompleteMe

  4. 更改编译使用python3(使用python2.7时跳过本步骤):
    vi ./install.py
    把第一行末尾的python改为python3

  5. 编译YCM core:
    ./install.py

youcompleteme是个很好的python自动补全工具,之前为安装这个工具花了大概80个小时,都没有成功,可见安装难度。

参考:
http://blog.csdn.net/hehe__eheh/article/details/50992388
https://stackoverflow.com/questions/31421327/errors-while-compiling-with-cmake

第九步:配置YCM:

不同于很多vim插件,YCM还需要有配置。在vim启动后,YCM会找寻当前路径以及上层路径的.ycm_extra_conf.py。在~/.vim/bundle/YouCompleteMe/third_party/ycmd/examples/中提供了默认的模板。

一般来说,可以在~/.vim目录下放一个默认的模板,而后再根据不同的项目在当前目录下再拷贝个.ycm_extra_conf.py。

  • 复制配置文件:
    cp ~/.vim/bundle/YouCompleteMe/third_party/ycmd/examples/.ycm_extra_conf.py ~/.vim/

  • 添加 vimrc 配置:

# 使用python2.7时去掉末尾的数字3
let g:ycm_python_binary_path='/usr/bin/python3'
let g:ycm_global_ycm_extra_conf='~/.vim/.ycm_extra_conf.py'

第十步:安装Jedi

  • 安装jedi-vim
    在.vimrc中添加:
    Plugin ‘davidhalter/jedi-vim’
    然后进入vim运行
    :PluginInstall

如果.补全太过影响速度,可以用let g:jedi#popup_on_dot = 0

你可能感兴趣的:(331. Windows10安装WSL;Ubuntu安装Youcompleteme)