win10下wsl2(Ubuntu)搭建及docker安装、zs
1.前提条件
- Windows 10 Build 18917或更新版本。
- Hyper-V虚拟化。注:有些电脑需要进BIOS开启虚拟化,我公司的电脑就是。
2. 步骤
- 启用虚拟机平台和 Linux 子系统功能
使用管理员权限打开Windows PowerShell
执行以下命令启用虚拟机平台:
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
根据提示确认是否需要重启,RestartNeeded : true 则重启。
还是在Windows PowerShell
执行以下命令启用子系统:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
- 安装发行版。
打开微软应用商店,搜索Ubuntu安装即可。
Ubuntu应用安装后启动才会进行子系统安装。 - 启用 WSL2
查看安装的wsl
wsl -l -v
设置 Linux 发行版的 WSL 版本
wsl --set-version Ubuntu 2
转换完成后可以再执行wsl -l -v
看看效果:
当然,使用以下命令可以在以后安装 Linux 的时候默认启用 WSL2:
wsl --set-default-version 2
设置Ubuntu默认用户为root
ubuntu config --default-user root
详细步骤请转https://blog.walterlv.com/post/how-to-install-wsl2.html
2.安装docker
切换到root用户,执行以下4条命令即可。
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo service docker start
sudo usermod -aG docker $USER
安装比较久,耐心一点。
3.美化终端
- 安装zsh
两个命令
sudo apt-get install zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
在.bash_profile中启用zsh,编辑文件,在末尾添加:
exec zsh
source .zshrc
进入~/ .zshrc修改主题为```ys``
ZSH_THEME="ys"
- 安装高亮和自动补全命令的插件
// 自动补齐和高亮插件
cd "$ZSH_CUSTOM/plugins"
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git
git clone https://github.com/zsh-users/zsh-autosuggestions.git
//然后对插件进行加载
vim ~/.zshrc
plugins=(git zsh-autosuggestions zsh-syntax-highlighting)
- 下载cmder
将下载好的cmder_mini.zip文件放到D盘并解压,然后记住文件所在的位置,我的文件解压到D:\Program Files\cmder_mini,然后复制路径,右键点击我的电脑--属性--高级系统设置--环境变量--系统变量,点击新建,变量名设置为:CMDER_HOME,变量值直接粘贴刚才拷贝的地址,然后点击系统变量中的path,点击新建,输入%CMDER_HOME%,至此,环境变量配置完成,一路点击确定关闭即可。
第二步添加 cmder 到右键菜单:环境变量添加后,在任意文件夹中即可打开Cmder,上一步的把 Cmder 加到环境变量就是为此服务的, win10系统下右键点击开始(屏幕左下角的图标“田”),选择Windows PowerShell(管理员),在管理员权限的终端输入以下语句即可:
cmder.exe /REGISTER ALL
可以参考https://www.zhihu.com/collection/233457118
不给里面的cmder配置有问题,启动可以配置这个地址:
%windir%\system32\bash.exe ~ -c zsh -cur_console:p
image.png
可以自己设置下背景和透明度。
好了,不bb了,直接看效果:
image.png
4. vim配置
我的配置首先要安装plug和ctags
curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
sudo apt-get install ctags
以上命令执行成功后先安装vim插件,vim ~/.vimrc
,然后配置
call plug#begin('~/.vim/plugged')
Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' }
Plug 'ludovicchabant/vim-gutentags'
call plug#end()
保存退出,然后vim
,执行
:source ~/.vimrc
#让配置生效
:PlugInstall
# 安装插件
安装完毕就在~/.vimrc直接贴上以下配置:
"使用此配置文件请先用以下命令安装插件管理工具plug和ctags
"curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
"sudo apt-get install ctags
"plug插件安装
call plug#begin('~/.vim/plugged')
Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' }
Plug 'ludovicchabant/vim-gutentags'
call plug#end()
"设置编码
set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
set termencoding=utf-8
set encoding=utf-8
"显示行号
set nu
"突出显示当前行
set cul
"突出显示当前列
"set cuc
"显示括号匹配
set showmatch
"设置缩进
"设置Tab长度为4空格
set tabstop=4
"设置自动缩进长度为4空格
set shiftwidth=4
"继承前一行的缩进方式,适用于多行注释
set autoindent
"设置粘贴模式
set paste
"总是显示状态栏
set laststatus=2
"显示光标当前位置
set ruler
"让vimrc配置变更立即生效
autocmd BufWritePost $MYVIMRC source $MYVIMRC
"----------------------gutentags相关配置-----------------------
"gutentags搜索工程目录的标志,碰到这些文件/目录名就停止向上一级目录递归
let g:gutentags_project_root = ['.root', '.svn', '.git', '.project']
"所生成的数据文件的名称
let g:gutentags_ctags_tagfile = '.tags'
"将自动生成的 tags 文件全部放入 ~/.cache/tags 目录中,避免污染工程目录
let s:vim_tags = expand('~/.cache/tags')
let g:gutentags_cache_dir = s:vim_tags
"检测 ~/.cache/tags 不存在就新建
if !isdirectory(s:vim_tags)
silent! call mkdir(s:vim_tags, 'p')
endif
" 配置 ctags 的参数
let g:gutentags_ctags_extra_args = ['--fields=+niazS', '--extra=+q']
let g:gutentags_ctags_extra_args += ['--c++-kinds=+pxI']
let g:gutentags_ctags_extra_args += ['--c-kinds=+px']
"---------------------NERDTree相关配置----------------------------
""将F1设置为开关NERDTree的快捷键
nnoremap <silent> <F1> :NERDTree<CR>
""修改树的显示图标
let g:NERDTreeDirArrowExpandable = '+'
let g:NERDTreeDirArrowCollapsible = '-'
""窗口位置
let g:NERDTreeWinPos='left'
""窗口尺寸
let g:NERDTreeSize=30
""窗口是否显示行号
let g:NERDTreeShowLineNumbers=1
""不显示隐藏文件
let g:NERDTreeHidden=0
""打开vim时如果没有文件自动打开NERDTree
"autocmd vimenter * if !argc() | NERDTree | endif
""当NERDTree为剩下的唯一窗口时自动关闭
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
""打开vim时自动打开NERDTree
autocmd vimenter * NERDTree
autocmd StdinReadPre * let s:std_in=1
autocmd VimEnter * if argc() == 1 && isdirectory(argv()[0]) && !exists("s:std_in") | exe 'NERDTree' argv()[0] | wincmd p | ene | exe 'cd '.argv()[0] | endif
"PHP自动补全
autocmd FileType php set omnifunc=phpcomplete#CompletePHP
效果:
image.png
image.png