Windows10安装WSL(Ubuntu子系统)及YouCompleteMe

[TOC]
第一步:安装wsl
第二步:安装wsl terminal
第三步:更新root用户的密码
第四步:更换软件源(apt源和pip源)
第五步:安装zsh
第六步:安装Vim plug和YouCompleteMe
第七步:编译YCM
第八步:配置YCM
第九步 python和pip配置
第十步 pypy3安装配置(如果不使用pypy请跳过)
第十一步 使用virtualenvwrapper虚拟环境
第十二步 Vim语法检查和格式化代码
第十三步 安装MariaDB数据库
第十四步:(仅对本人有效)修改.vimrc,添加molakai主题

第一步:安装wsl

WSL(Ubuntu)将Ubuntu和Win10无缝连接起来,让开发人员可以不使用虚拟机,就轻松地在同一个系统中使用win10和Ubuntu,你可以用它代替Cywin32和babun.

  • 最新版win10(21年2月更新)
  1. 在win10的设置中打开更新和安全,打开针对开发人员选项
  2. 然后在程序和功能中打开Linux子系统。
  3. 重启计算机后,打开应用商店搜索下载ubuntu18.04

直接在应用商店搜索ubuntu,推荐选择20.04的ubuntu。

  • 添加ubuntu到快速访问
    如果你需要经常在win10资源管理器对ubuntu的文件进行操作,那么在C盘搜索rootfs这个文件夹,这就是ubuntu在win10上的储存位置。
    将rootfs文件夹拖放到资源管理器的快速访问。(你也可以添加其下的/home/你的用户文件夹)

  • 获取权限
    直接在win10资源管理器操作ubuntu的文件可能是无效的,这是因为win10的默认用户并不是超级管理员,对ubuntu的权限是只读的。
    你需要取得rootfs文件夹的所有权限。(可以使用“鼠标管家”这个软件,添加菜单,管理员取得所有权限)

第二步:安装windows terminal

wsl-terminal是一个很好用的WSL终端。

直接在应用商店搜索就可以了。

第三步:更新root用户的密码

打开Windows Terminal,点击标题栏的下拉箭头,选择ubuntu20.04。

  • 更新root密码:
sudo passwd

这一步需要输入你在下载ubuntu后建立的用户密码

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

系统默认的apt源是国外的,下载软件速度慢,python的pip源也很慢,我们都换成阿里云的源。

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

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

#添加阿里源
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse

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然后按向上键,就会出现以前输入的以sudo开头的命令。

  • 安装zsh:
    sudo apt -y install zsh

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

  • 安装完后默认启动zsh:
    在安装完后提示y/n时,输入 y并回车,默认启动zsh

如果提示文件只读,采取第一步中的获取权限

第六步:安装Vim plug和YouCompleteMe

Vim plug是vim插件管理工具,YCM是很好用的C、python代码补全工具,也支持Go、Rust等其他语言。

  • 下载Vim Plug:
    curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

  • 在vimrc中添加安装配置

vi ~/.vimrc

在其中添加

" Specify a directory for plugins
call plug#begin('~/.vim/plugged')

" Make sure you use single quotes
Plug 'jiangmiao/auto-pairs'
Plug 'davidhalter/jedi-vim', {'for': 'python'}
Plug 'Valloric/YouCompleteMe', {'for': 'python'}

"可以添加已经手动安装的插件
"Plug '~/.vim/bundle/YouCompleteMe'
" Initialize plugin system
call plug#end()

保存退出,并进入vi

vi

按下键进入命令行,输入

PlugInstall

注意:

YCM的python补全依赖jedi-vim

因为YCM包有200多M,所以需要下载很久。

第七步:编译YCM

安装完成后提示YCM server错误,这是正常的,因为ycm需要手工编译出YCM core库。

  1. 安装YCM编译需要的依赖
    sudo apt -y install cmake build-essential python3-dev
  2. 切换到YCM目录:
    cd ~/.vim/plugged/YouCompleteMe
  3. 更改编译使用python3(使用python2.7时跳过本步骤):
    vi ./install.py
    把第一行末尾的python改为python3
  4. 编译YCM core:
    ./install.py

参考:
vim安装YouCompleteMe插件,与python补全插件jedi-vim

第八步:配置YCM

YouCompleteMe配置后才能发挥出它强大的功效。

  • 在vimrc中设置YCM使用python3支持:
"python版本设置,使用python2.7时去掉末尾的数字3
let g:ycm_python_binary_path='/usr/bin/python3'
" 语法关键字补全
let g:ycm_seed_identifiers_with_syntax=1
"从第2个键入字符就开始罗列匹配项
let g:ycm_min_num_of_chars_for_completion=2
"最小候选标识符长度
let g:ycm_min_num_identifier_candidate_chars = 5
"按下Ctrl+空格直接弹出所有类和函数,要先关闭系统中的输入法切换快捷键
let g:ycm_key_invoke_completion = '<C-Space>'
"配置文件路径
let g:ycm_global_ycm_extra_conf='~/.vim/.ycm_extra_conf.py'
"把ycm识别的标识符和语法关键字放在一起
let g:ycm_seed_identifiers_with_syntax = 1


"注释和字符串中的文字也会被收入补全,默认关闭
let g:ycm_collect_identifiers_from_comments_and_strings=1
"字符串输入补全,字符串中输入.加字母时会引发错误,默认开启
let g:ycm_complete_in_strings=1

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

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

第九步 安装pip

sudo apt install python3-pip

出现warning,需要添加到path

vi ~/.zshrc

# 将下面的语句加入.zshrc

export PATH=$PATH:/home/yunlong/.local/bin

# 最后再重新读取

source ~/.zshrc

第十步 pypy3安装配置(如果不使用pypy请跳过)

  • 下载pypy3并解压
    到pypy官网下载pypy3.6-v7.0.0-linux64.tar.bz2,然后用下面的命令解压
tar -jxvf pypy3.6-v7.0.0-linux64.tar.bz2

解压命令详解

  • 解压后把文件夹命名为pypy3

  • 移动pypy3到/usr/local/lib

sudo mv pypy3 /usr/local/lib/
  • 建立软链接,使其可执行
sudo ln -s /usr/local/lib/pypy3/bin/pypy3 /usr/bin/pypy
  • 给pypy安装pip
sudo pypy get-pip.py
sudo ln -s /usr/local/lib/pypy3/bin/pip /usr/bin/pipp

注意:你也可以使用类似pip-pypy的命令来代替pipp,这只是我个人习惯

第十一步 使用virtualenvwrapper虚拟环境

通常不同的项目会使用不同的库版本,虚拟环境能让你免弄坏系统环境的风险。virtalenvwrapper基于virtualenv,但是更方便。

  • 安装virtualenvwrapper
sudo pip install -U virtualenvwrapper

这会自动安装依赖包virtualenv。

  • 打开zshrc,添加环境变量等后,重启zsh终端
vi ~/.zshrc

export PATH=/usr/local/lib/pypy3/bin:$PATH
export VIRTUALENVWRAPPER_PYTHON=/usr/local/lib/pypy3/bin/pypy3
source /usr/local/lib/pypy3/bin/virtualenvwrapper.sh
  • 新建虚拟环境
mkvirtualenv -p /usr/local/lib/pypy3/bin/pypy3 env1

默认创建在~/. virtualenvs目录下
-p指定了建立时使用的版本,如果你使用默认的python3,可以使用
mkvirtualenv env1

  • 自动选择虚拟环境,在zshrc末尾添加
workon env1

注:找不到virtualenvwrapper.sh,可以使用下面的命令查找脚本

sudo find / -path "/mnt" -prune -o -name virtualenvwrapper.sh 
-print

第十二步 Vim语法检查和格式化代码

syntastic是语法检查工具,它需要flake8的支持,yapf用来格式化python代码。

  • 安装flake8语法检查和yapf代码格式化
sudo pipp install flake8 yapf
  • 在vimrc中安装syntastic
    vimrc中添加
Plugin 'vim-syntastic/syntastic'

"(下面的配置放在vundle安装语句外)
"vimrc设置flake8作为语法检查器
let g:syntastic_python_checkers = ['flake8']
"高亮错误"
let g:syntastic_enable_highlighting=1
"自动跳转到发现的第一个错误或警告处"
let g:syntastic_auto_jump = 1

"yapf自动格式化快捷键"
autocmd FileType python nnoremap <F8> :0, $!yapf<CR><CR>

保存退出后,用PluginInstall命令安装。

yapf仅对py文件有效, 如果出现语法错误,可能会出现乱码,这时按u键恢复py文件。

第十三步 安装MariaDB数据库

MariaDB是MySQL作者的新分支,CentOS已经默认使用MariaDB代替MySQL。

  • 安装
sudo apt -y install mariadb-server python3-pymysql
  • 重启数据库,以创建sock文件
sudo service mysql restart
  • 切换到root用户,进入数据库
su -
# 输入密码
mysql
  • 在mysql> 提示符下创建用户
# 创建一个名为:admin  密码为:admin  的用户。
insert into mysql.user(Host,User,Password) values("localhost","admin",password("admin"));



# 刷新权限
flush privileges;


# 赋予admin用户所有权限
GRANT ALL ON *.* TO 'admin'@'localhost';


# 删除用户及所有权限
DROP USER account;
  • ~/.zshrc中设置alias
alias db='sudo service mysql start'
  • 注意: mariaDB需要手动创建数据库
  • Ubuntu上mariaDB的默认字符集为utf8mb4,兼容utf-8,不需要进行更改。Centos需要设置charset。

第十四步:(仅对本人有效)修改.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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容