Vim 作为 Rust IDE 也可以很丝滑

1,736 阅读3分钟

目前公认的宇宙"最强IDE" VSCode 已经把开发体验做的足够友好了,可能有人会问:为什么选择使用Vim作为IDE开发Rust

我的回答是:装 X 至上...

当然,对于使用Vim进行开发这件事,无需太多解释,喜欢用的人爱不释手,不喜欢用的人,嗤之以鼻,不会用的人,羡慕不已......

安装 Vim 和 Rust

这里以MacOS举例:

安装Vim(macos 的终端默认情况下已经内置了Vim)

brew install vim

安装Rust

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

插件管理器

为了方便管理 Vim 插件,我们选择安装 vim-plug ,它是一个轻量级且易于使用的插件管理器。。

vim-plug 的仓库地址:https://github.com/junegunn/vim-plug,你可以参考安装教程,结合自己的系统进行安装。

这里以 UnixMacOS一样)安装为例:

curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
    https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

配置 .vimrc

.vimrc 是 Vim 的配置文件,我们可以在里面进行配置和管理插件。

在终端中使用 vim ~/.vimrc 进行编辑。

以下是一个示例 .vimrc 文件,你也可以根据个人喜好进行配置:

" 启动vim-plug
call plug#begin()
​
" 插件列表
Plug 'neoclide/coc.nvim', {'branch': 'release'}
Plug 'rust-lang/rust.vim' " Rust语法高亮、格式化等
Plug 'prabirshrestha/vim-lsp' " 代码补全、错误检查等
Plug 'scrooloose/nerdtree' " 文件浏览器
Plug 'dense-analysis/ale' " 异步语法检查和代码格式化
Plug 'vim-airline/vim-airline' " 状态栏美化
​
" 结束vim-plug
call plug#end()
​
" 启用语法高亮
syntax enable
​
filetype plugin indent on
​
let mapleader = ","
" rust.vim 配置
let g:rustfmt_autosave = 1 " 保存时自动格式化
let g:rustfmt_command = "rustfmt" " 自定义格式化命令
​
​
" ALE 配置
let g:ale_linters = {
   'rust': ['cargo', 'clippy'],
}
let g:ale_fixers = {
   'rust': ['cargo', 'rustfmt'],
}
let g:ale_rust_cargo_use_clippy = 1 " 使用 clippy 进行更严格的检查
​
" vim-airline 配置
let g:airline#extensions#ale#enabled = 1 " 在状态栏显示 ALE 检查结果
​
" NERDTree 配置
autocmd vimenter * NERDTree " 编辑文件时默认打开NERDTree
" let g:NERDTreeShowHidden = 1 " 显示隐藏文件
​
" 快捷键映射
" 在可视模式下选中一段文本,执行 ft 进行格式化
vnoremap <leader>ft :RustFmtRange<CR>
" 普通模式下执行 ft 进行格式化
nnoremap <leader>ft :RustFmt<CR>
" 普通模式下,按Meta/Option键+r,执行运行
nnoremap <M-r> :RustRun<CR>
" 普通模式下,按Meta/Option键+t, 执行测试
nnoremap <M-t> :RustTest<CR>
​
" 普通模式下,按 Ctr + t,切换文件列表打开和关闭
nnoremap <C-t> :NERDTreeToggle<CR>

保存并关闭 .vimrc 文件后,重新打开 Vim(这个顺序要记住)

然后,在 Vim 命令模式下(按 : 之后),输入 PlugInstall ,回车即可对配置中的插件进行安装。

Vim插件安装

插件介绍

.vimrc 配置中,我们使用了一些常用的插件,下面简单进行演示

rust.vimale提供 Rust 语法高亮、代码补全、代码格式化

RustVim

vim-airline 美化状态栏

可以看到Vim窗口底部的变化,最左边出现了 NORMAL(编辑模式),src/main.rs(编辑中的文件),rust-analzer (Rust语法支持);且当鼠标所在代码异常时,最底部会给出错误信息。

vim-airline

NERDTree文件浏览器,你可以根据自己的需求添加或删除插件。

在我们的.vimrc配置中,对 NERDTree 切换文件浏览器的快捷键进行了映射:

nnoremap <C-t> :NERDTreeToggle<CR>

因此,只需要按 Ctr + t,进行文件浏览器的打开/关闭切换,打开状态,可以选择资源中的某个文件,选中后回车,即可打开该文件,再按Ctr + t 关闭文件浏览器,即可进入文件编辑状态。

NerdTree