在Windows 11上安装好看的WSL2.0 和 Vim
LiuTianyou · · 个人记录
前言
这篇博客将教你如何在Windows 11 x64环境上安装WSL 2.0并配置Vim 9.0 C/C++编程环境.
这篇博客涉及的知识点包括:
- 配置
Windows 11可选功能 - 安装我认为最好看的终端软件
Tabby - 为
Ubuntu配置apt安装源 - 升级、安装环境
- 删除旧版
Vim,安装新版Vim - 配置
Vim(使用作者的配置) - 在 Windows 上 使用 WSL GVim
- 为你的好友配置SSH服务以共享源程序和WSL环境
配置Windows 11可选功能
进入设置中的“应用”,选择“可选功能”,点击最下方“更多Windows功能”,按如下配置:
然后一定要重启系统,否则配置是无法生效的.
安装完成之后,你需要安装一个补丁:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
Win+X打开Powershell,然后运行命令:wsl --set-default-version 2
安装Ubuntu:
下载http://tlu.dl.delivery.mp.microsoft.com/filestreamingservice/files/8a26c76e-5a63-42d5-9f7d-df053c273363?P1=1667192241&P2=404&P3=2&P4=T%2bQKGr36IRdF%2fT1BsWQoJJhiVi7kg1XxQunbUS1upbKO%2bJFf2UU%2fJSdE%2fiougMcmrLqibUqhUbzNeR9ue3ofig%3d%3d安装所需运行库
下载http://tlu.dl.delivery.mp.microsoft.com/filestreamingservice/files/1ed69a19-dba1-47a0-83ea-284bce77b10e?P1=1667218108&P2=404&P3=2&P4=mlL6%2fGravmsQNIJt8L5Rxjz8yTHtTvq14ChzuxeViqOVCxPInLwjdWmXMrdTxJPeoxj0SXMvRIsw4rJ44qTsFA%3d%3d 安装Ubuntu商店应用
安装之后,运行即可. 在过程中配置用户名称和密码之后,就可以登录WSL了.
安装终端软件Tabby
Tabby是一款相当好用的终端模拟软件,只需要安装后简单配置即可.
首先,进入Tabby的Github Release,然后下载最新版本(选择带有x64和.exe后缀的安装程序).
如下图,在设置中选择语言,并开启Shell集成.
来到“外观”选项卡,可以配置字体大小、字重之类的东西.
终端背景要选择“取自配色方案”,这样在下文配置配色方案时才不会改不了背景.
作者认为默认字体太小,所以设置了18号字体.
可以通过修改自定义CSS来实现改背景,如:
.content.tabs-on-top {
background: url("背景URL") no-repeat;
/* background-size:cover;*/
}
.content {
background-color:rgba(0,0,0,0.45)
}
可以实现半透明背景图片.
在“配置与连接”选项卡中,将“新标签页的默认配置”改为WSL/Ubuntu.
在“终端”选项卡中,将“需要同时按下按键来点击链接”中选择“Ctrl”来避免你不小心点错跳出浏览器.
取消“复制带格式”和“Bracketed粘贴”来避免你在复制粘贴样例时粘贴多余的字符.
在“配色方案”选项卡中选择你喜欢的配色方案,这里就不放截图了. 作者选的是PaulMillr主题.
在“窗口”选项卡中,你可以打开“亚克力背景”然后通过调节不透明度来实现透明窗口,作者不太喜欢.
标签页可以看作者的配置,也可以自己配一下.
为Ubuntu配置apt安装源
在终端中执行如下命令:
sudo cp /etc/apt/sources.list ~/backup.sources.list # 防止出锅,备份
sudo rm /etc/apt/sources.list
# sudo可能会让你输入你设置的密码,下文同
sudo vim /etc/apt/sources.list
按i键进入插入模式,输入从清华大学开源软件镜像站获取到的内容,按:wq保存并退出.
使用如下命令更新软件包缓存:
sudo apt update
升级、安装环境
在终端中执行如下命令:
sudo apt upgrade # 更新软件包
sudo apt install gcc make autoconf clang clangd python3 gdb dos2unix git # 安装C/C++环境与编译环境
删除旧版Vim,安装新版Vim
在终端中执行如下命令删除旧版Vim:
sudo apt remove vi vim-tiny vim vim-runtime
卸载之后,你需要下载Vim的源码,执行以下命令获取:
git clone https://github.com/vim/vim.git # 镜像:https://gitee.com/mirrors/vim.git
cd vim
获取完毕之后,你需要先安装一下依赖包:
sudo apt install libncurses5-dev libatk1.0-dev libbonoboui2-dev libcairo2-dev libxpm-dev libxt-dev python-dev python3-dev ruby-dev lua5.1 liblua5.1-dev libperl-dev
然后编译安装:
./configure --enable-multibyte --enable-cscope --enable-python3interp=yes --with-x # 如果报错,就去除对应命令行参数
make
sudo make install
配置Vim(使用作者的配置)
创建.vim目录和其配置文件:
mkdir ~/.vim
mkdir ~/.vim/autoload
touch ~/.vimrc
下载plug.vim到~/.vim/autoload:
wget https://github.com/junegunn/vim-plug/raw/master/plug.vim -O ~/.vim/autoload/plug.vim
将作者的.vimrc配置文件输入进去(感谢@Ptilopsis_w的贡献)
vim9script
call plug#begin('~/.vim/plugged')
Plug 'connorholyday/vim-snazzy'
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
Plug 'preservim/nerdtree'
Plug 'luochen1990/rainbow'
Plug 'jiangmiao/auto-pairs'
Plug 'Yggdroot/indentLine'
Plug 'prabirshrestha/vim-lsp'
Plug 'prabirshrestha/asyncomplete.vim'
Plug 'mattn/vim-lsp-settings'
Plug 'prabirshrestha/asyncomplete-lsp.vim'
Plug 'kaicataldo/material.vim'
Plug 'tomasr/molokai'
call plug#end()
source $VIMRUNTIME/mswin.vim
behave mswin
# 键盘映射
map H ^
map L $
map <C-a> ggvG$
map <F1> :NERDTreeToggle<CR>
map <F2> :LspRename<CR>
map <F9> :w<CR>:call Run()<CR>
#imap <F9> <ESC>:w<CR>:call Run()<CR>
inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>"
inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"
inoremap <expr> <cr> pumvisible() ? "\<C-y>\<cr>" : "\<cr>"
inoremap ( ()<Esc>i
inoremap [ []<Esc>i
#inoremap < <><Esc>i
inoremap { {}<Esc>i
inoremap ' ''<Esc>i
inoremap " ""<Esc>i
inoremap { {<CR>}<Esc>O
#set lines=40 # 默认显示行数
#set columns=160 # 默认显示列数
set clipboard+=unnamed # 与系统共享剪切板
set number # 默认显示行号
colorscheme material # 默认主题
#g:molokai_original = 1 # molokai 主题设置
set guifont=Consolas\ 14 # 默认字体
set encoding=utf-8 # 默认编码
syntax on # 打开高亮
syntax enable
language C # 默认语言
set nocompatible # 关闭兼容vi模式
filetype on # 检测文件类型
filetype indent on # 不同文件使用不同缩进
filetype plugin on # 插件文件类型
set mouse=a # 兼容鼠标
set expandtab # 将缩进设置为空格
set tabstop=4 # 将缩进设置为4空格
set shiftwidth=4
set softtabstop=4
set guioptions-=T
set backspace=indent,eol,start # 跨行退格
set foldmethod=indent # 以缩进方式折叠代码
set foldlevel=99
set autoindent # 继承前一行的格式
set smartindent # C程序自动缩进
set cindent # 使用C样式的缩进
#set cursorline # 高亮显示光标所在行
#set nowrap # 关闭自动换行
set showcmd # 显示输入的命令
set wildmenu # 输入命令时Tab显示提示
set hlsearch # 高亮显示搜索结果
set incsearch # 动态显示搜索结果
exec "nohlsearch"
set ignorecase # 搜索模式忽略大小写
set smartcase # 智能模式 自动判断搜索时是否忽略大小写(仅在启用ignorecase时生效)
def g:Run() # 使用g++编译并运行cpp文件
:!g++ "%" -std=c++14 -g -Wall -Wextra -fsanitize=undefined,address -o "%<" && "./%<"
enddef
# airline
set ambiwidth=double # 设置为双字宽显示
g:airline_theme = 'serene'
g:airline_powerline_fonts = 1
g:airline#extensions#tabline#enabled = 1
g:airline#extensions#tabline#left_sep = ' '
g:airline#extensions#tabline#left_alt_sep = '|'
g:airline#extensions#tabline#buffer_nr_show = 1
# rainbow bracket
g:rainbow_conf = {
\ 'guifgs': ['#FC4646', '#FF8800', '#FFD700', '#44EB35', '#4BB7FF', '#FF00D4']
\ }
g:rainbow_active = 1
# indentLine
g:indentLine_enabled = 1
g:indentLine_char = '|'
g:indentLine_conceallevel = 2
# vim lsp
g:lsp_semantic_enabled = 1
g:lsp_diagnostics_highlights_enabled = 0
set foldmethod=expr
set foldexpr=lsp#ui#vim#folding#foldexpr()
set foldtext=lsp#ui#vim#folding#foldtext()
读者根据注释可以对其进行一些修改.
然后,运行命令vim以打开vim,输入命令:PlugInstall:
当出现上图所示,你就安装完成了.
(若下载太慢,可下载后面资源里的.vim文件夹覆盖)
为你的好友配置SSH服务以共享源程序和WSL环境
安装SSH服务器(应该已经安装了):
sudo apt install openssh-server
启动服务:
sudo service ssh start
获取WSL的动态IP:
ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: bond0: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether be:b8:44:de:32:1b brd ff:ff:ff:ff:ff:ff
3: dummy0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 8e:03:b2:f3:bd:6d brd ff:ff:ff:ff:ff:ff
4: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
link/ipip 0.0.0.0 brd 0.0.0.0
5: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
link/sit 0.0.0.0 brd 0.0.0.0
6: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:15:5d:20:89:09 brd ff:ff:ff:ff:ff:ff
inet 172.18.127.250/20 brd 172.18.127.255 scope global eth0 # 这里就是IP出现的位置 IP: 172.18.127.250
valid_lft forever preferred_lft forever
inet6 fe80::215:5dff:fe20:8909/64 scope link
valid_lft forever preferred_lft forever
在Windows Powershell进行端口代理(管理员运行):
C:\> netsh interface portproxy add v4tov4 listenport=22 connectaddress=<WSL动态IP> connectport=22 listenaddress=<好友连接你的IP> protocol=tcp
注意以上方法不是一劳永逸的. 每次重启IP都会重新分配,以上过程需要重来.
连接SSH:
ssh <用户名>@<你的IP> # Linux
C:\> ssh <用户名>@<你的IP> # Windows
效果
补充:亮色主题
Vim 主题:
colorscheme molokai
g:rehash256 = 1
Tabby 主题:Paper
CSS设置:
.content.tabs-on-top {
background: url("https://cdn.luogu.com.cn/upload/image_hosting/a6gaiexk.png") no-repeat;
background-size:cover;
}
终端背景取自配色方案.
在 Windows 上使用 WSL GVim
安装VcXsrv Windows X Server: https://sourceforge.net/projects/vcxsrv/
将Disable access conreol 开启.
在Windows下运行ipconfig,然后找到WSL对应的IPv4地址.
在~/.bashrc中加入export DISPLAY=ip:0.
然后运行gvim xxx即可.