本文将教你如何在 Windows 的子系统 Linux (英文名 Windows Subsystem for Linux ,简称 WSL)上使用 Vim 编辑器。
参考 配置 Windows 终端 & WSL 开发环境 这篇文章配置 WSL 开发环境。
近期 WSL 已经从 WSL1 升级到 WSL2,WSL 2 提高了文件系统性能并增加完全的系统调用兼容性。在同一网络环境下与 WSL1 相比,WSL2 在执行 git clone
、apt install
等命令时有着更快的速度。
接下来进入主题开始配置 Vim。
基础设置
这一部分是 Vim 基础设置,像显示行号、语法高亮显示等等。
首先在 WSL 主目录(~
)中添加配置文件 .vimrc
,将下面的内容添加进去。
set encoding=utf-8
set nocompatible
syntax on
set noerrorbells
set nu
set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab
set smartindent
set nowrap
set smartcase
set noswapfile
set nobackup
set undodir=~/.vim/undodir
set undofile
set incsearch
进阶设置 vim-plug
这部分会使用插件强化 Vim 编辑器。推荐使用 Vim 插件管理器管理插件,目前有几个插件管理器可供选择,比如 vim-plug、Vundle.vim 等等。它们都提供了诸如安装、卸载和更新的功能,方便我们管理插件。
我比较推荐 vim-plug 插件管理器,它设置简单,容易使用,支持超速的并行安装和更新。首先需要安装 vim-plug,参考 官方安装步骤。
安装
下载 plug.vim 文件,并把它放到 “autoload” 目录。
终端运行以下命令,下载 plug.vim 文件,并且将会保存在 ~/.vim/autoload/
路径下。
linux
curl -fLo ~/.vim/autoload/plug.vim --create-dirs
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
Windows (PowerShell)
md ~.vimautoload
$uri = 'https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'
(New-Object Net.WebClient).DownloadFile(
$uri,
$ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath(
"~.vimautoloadplug.vim"
)
)
用法
将以下内容添加到 ~/.vimrc
文件中。
call plug#begin('~/.vim/plugged')
// 插件应该放在这个位置
Plug 'vim-utils/vim-man'
Plug 'gruvbox-community/gruvbox'
call plug#end()
命令
vim 普通模式下运行 vim-plug 命令。
PlugInstall
安装插件PlugUpdate
更新或安装插件PlugUpgrade
更新 vim-plugPlugClean
移除不在列表中的插件PlugStatus
查看插件状态
注意
- vim 插件安装路径
~/.vim/plugged
vim-plug
配置文件plug.vim
的路径为~/.vim/autoload
插件推荐
YouCompleteMe (YCM)
YouCompleteMe Github 主页。
Linux 64-bit
Linux 安装步骤
- 添加插件信息到
~/.vimrc
文件中。
call plug#begin('~/.vim/plugged')
// YouCompleteMe 插件放在这个位置
Plug 'ycm-core/YouCompleteMe'
call plug#end()
- 在 vim 编辑器中运行下面的命令,安装插件 YCM。
:PlugInstall
- 安装 cmake、vim、python3-dev
sudo apt install build-essential cmake vim python3-dev
- 安装 mono-complete、go、node 和 npm
- 编译 YCM
cd ~/.vim/plugged/YouCompleteMe
python3 install.py --all
-all
表示安装所有的语言特性。其他可利用的参数还有:
--clangd-completer
,C-family 语言支持--cs-completer
,c# 语言支持,需要先安装 Mono 。--go-completer
,GO 语言支持,需要先安装 Go 。--ts-completer
,Javascript 和 TypeScript 语言支持,需要先安装 Node.js & npm 。--rust-completer
,Rust 语言支持。--java-completer
,Java 语言支持,需要先安装 JDK8 (version 8 required) 。
macOS
macOS 安装步骤
gruvbox
vim 主题
vim-fugitive
vim 编辑器中执行 git 命令
nerdtree
vim-airline
undotree
vim-man
vim-polyglot
常见问题
WSL vim 编辑器使用 Windows 系统的剪贴板
- 安装 VcXsrV (安装后先不要启动)
- 开始菜单中启动 XLaunch
- 使用默认选项,一路点击 下一步 ,确保选择 Clipboard 选项
- 安装结束 XLaunch 时,保存配置文件 config.xlaunch,并且启动。
- 在 WSL 系统的
~/.bashrc
文件中添加DISPLAY=localhost:0.0
,并且在终端运行source ~/.bashrc
- 确保 Vim 有剪贴板的支持。终端运行
vim --version |grep clipboard
,结果应该是 +clipboard ,如而不是 -clipboard。或者在 vim 编辑器中运行命令:echo has("clipboard")
,若结果是0
,表示 vim 没有剪贴板的支持。 - 如果没有剪贴版支持,你需要安装剪贴板支持,在终端运行
sudo apt install vim-gtk
- 现在你就可以使用
*p
、*y
命令进入 Windows 系统的剪贴板了。或者通过添加set clipboard=unnamed
到 ~/.vimrc 文件中,设置为默认。
参考
- How to Install CMake on Ubuntu 18.04 LTS
- linux下安装cmake
- 适用于 Linux 的 Windows 子系统文档 了解更多 WSL2 特点。
- 适用于 Linux 的 Windows 子系统安装指南 (Windows 10) 更新 WSL1 到 WSL2。