官网:https://github.com/racer-rust/vim-racer最大亮点就是支持定义跳转、rust-doc 跳转 。
racer-vim 的定位是 Rust code completion (代码补全)和 navigation (代码导航/跳转)。这两项功能 (coc-)rust-analyzer 都已经超越了 racer:
Rust:vim 环境配置
语雀内容
快捷键配置
racer 官网的推荐设置我都翻译在下面了,直接按需添加到配置文件。
" === racer 设置 ===
set hidden
" 设置 racer 路径
let g:racer_cmd = "/home/ubuntu/.cargo/bin/racer"
" Racer 的补全方式和 (coc-)rust-analyzer 智能提示补全不太一样,使用的是 vim 的
" Omni completion 补全方式,需要手动触发,快捷键是 <c-n> <c-o>
" 并不推荐 vim-racer 的补全功能
" 补全时展示完整的函数定义,比如参数和返回类型
let g:racer_experimental_completer = 1
" 补全时添加括号
let g:racer_insert_paren = 1
" 跳转定义快捷键,十分有用
augroup Racer
autocmd!
autocmd FileType rust nmap <buffer> gd <Plug>(rust-def)
autocmd FileType rust nmap <buffer> gs <Plug>(rust-def-split)
autocmd FileType rust nmap <buffer> gx <Plug>(rust-def-vertical)
autocmd FileType rust nmap <buffer> gt <Plug>(rust-def-tab)
autocmd FileType rust nmap <buffer> <leader>gd <Plug>(rust-doc)
autocmd FileType rust nmap <buffer> <leader>gD <Plug>(rust-doc-tab)
augroup END
可以只设置关于跳转定义 (definition) 和文档 (doc) 的部分:
" === racer 设置 ===
set hidden
" 设置 racer 路径
let g:racer_cmd = "/home/ubuntu/.cargo/bin/racer"
" 跳转定义快捷键,不建议设置 gt
augroup Racer
autocmd!
autocmd FileType rust nmap <buffer> gd <Plug>(rust-def)
autocmd FileType rust nmap <buffer> gx <Plug>(rust-def-vertical)
autocmd FileType rust nmap <buffer> <leader>gd <Plug>(rust-doc)
" autocmd FileType rust nmap <buffer> <leader>gD <Plug>(rust-doc-tab)
augroup END
使用方法
在当前的脚本里,按 Esc
进入 normal 模式,光标移到变量、函数之类的单词上
- 按
gd
即可跳转到定义它们的位置,如果是被定义在别的文件,会暂时关闭当前文件窗口(不会保存原文件),打开新的缓冲区来显示跳转到的定义。 - 按
gx
会分割出左右窗口,左边是定义的地方,按Ctrl+w+w
可以在两个窗口之间跳转,按Ctrl+w+r
可以交换窗口位置,关闭哪个窗口就用:q
( 或者:close
)命令
- 按
\gD
跳转到函数 doc 说明的新窗口。前提是<leader>
键设置为\
。
buffer 和 tab page
- 关于 buffer (缓冲区)的一些操作:
- 快捷键
Ctrl+^
可以在这两个文件(缓冲区)中跳转 - 命令
:bn
或:bnext
打开下一个缓冲区;命令:bN
或:bNext
打开上一个缓冲区 - 命令
:bfirst
打开第下一个缓冲区;命令:blast
打开最后一个缓冲区 - 命令
:bd
或:bdelete
删除当前缓冲区,也就是把当前文件从 vim 内存中移除,相当于关闭文件 - 命令
:ls
列出缓冲区中打开的文件名称
- 快捷键
- 关于 tab page (标签页面)的一些操作:
- 快捷键
gt
或命令:tabnext
跳转到下一页面;快捷键ngT
跳转第 n 个页面。注意 vim 的 tab 切换和 racer 提供的 rust-def-tab 设置冲突。 - 快捷键
gT
或命令:tabNext
跳转到上一页面 - 命令
:tabclose
关闭当前页面;命令:tabs
显示所有页面的文件名
- 快捷键