译者: Willis
内 容 rust
1. 简介 rust-intro 2. 设置 rust-settings 3. 命令 rust-commands 4. 映射 rust-mappings简 介 rust-intro
本插件提供 Rust 文件类型的语法和其他支持功能。完整功能需要 Vim 8 或更高版本。 有些命令在之前的版本不可用。设 置 rust-settings
插件定义了若干改变插件行为的变量,可放在 vimrc 中定义。 部分变量可为每个缓冲区单独设置 (使用 :b 前缀),缓冲区局部变量优先于全局 g: 的对标变量。 g:rustc_pathg:rustc_path
设置用于 :RustRun 和 :RustExpand 命令的 rustc 路径。省略时会从
$PATH 中寻找:
let g:rustc_path = $HOME."/bin/rustc"
g:rustc_makeprg_no_percent
g:rustc_makeprg_no_percent
设为 1 时,'makeprg' 缺省为 "rustc" 而不是 "rustc %":
let g:rustc_makeprg_no_percent = 1
g:rust_conceal
g:rust_conceal
置位时,打开基础 conceal 支持:
let g:rust_conceal = 1
g:rust_conceal_mod_path
g:rust_conceal_mod_path
置位时,隐藏 ( conceal ) 路径连接符 "::":
let g:rust_conceal_mod_path = 1
g:rust_conceal_pub
g:rust_conceal_pub
置位时,隐藏 ( conceal ) "pub" 符:
let g:rust_conceal_pub = 1
g:rust_recommended_style
g:rust_recommended_style
置位时,设置 vim 缩进和行宽以遵循 Rust 风格规范 (即,缩进为 4 个空格,
'textwidth' 设为 100)。此选项缺省打开。要关闭之:
let g:rust_recommended_style = 0
g:rust_fold
g:rust_fold
置位时,打开 folding :
let g:rust_fold = 1
值 效果
0 无折叠
1 折叠花括号块。缺省打开全部折叠。
2 折叠花括号块。'foldlevel' 沿用其全局值 (缺省关闭全部折
叠)。
g:rust_bang_comment_leader
g:rust_bang_comment_leader
设为 1 时,在使用 /*! 语法的多行文档注释时,给出中间部分的前导注释字符
串:
let g:rust_bang_comment_leader = 1
g:rust_use_custom_ctags_defs
g:rust_use_custom_ctags_defs
设为 1 时,应用自定的 ctags Rust 定义而不用 rust.vim 自带的:
let g:rust_use_custom_ctags_defs = 1
注意:仅在已安装 Tagbar Vim 插件, 且 未检测到 Universal Ctags 时,才
会应用 rust.vim 中的内建定义。这是因为 Universal Ctags 已有内建能和
Tagbar 配合使用的 Rust 支持。
另外 注意 Tagbar 插件在生成可用于 Vim 在位于不同源文件的定义间导航的
tags 文件时,不会自动使用非 Universal Ctags 的 ctags 程序。如果要自
行生成 tags 文件,可先将 rust.vim/ctags/rust.ctags 复制到用户的
~/.ctags 里再执行命令。
g:ftplugin_rust_source_path
g:ftplugin_rust_source_path
设置附加到 'path' 前部的路径,用于查找 Rust 源文件:
let g:ftplugin_rust_source_path = $HOME.'/dev/rust'
g:rustfmt_command
g:rustfmt_command
设置会在 $PATH 里查找的 'rustfmt' 可执行文件名。省略时默认为
'rustfmt':
let g:rustfmt_command = 'rustfmt'
g:rustfmt_autosave
g:rustfmt_autosave
设为 1 时,缓冲区保存时会自动执行 :RustFmt 。省略时默认为 0:
let g:rustfmt_autosave = 0
也可为每个缓冲区单独设置 b:rustfmt_autosave ,优先于全局设置。
g:rustfmt_autosave_if_config_present
g:rustfmt_autosave_if_config_present
设为 1 时,如果待编辑文件的任何一级父目录里存在 rustfmt.toml 文件,
自动置位 b:rustfmt_autosave 。省略时默认为 0:
let g:rustfmt_autosave_if_config_present = 0
如果希望仅当项目给出 rustfmt.toml 配置文件时,才会在保存时执行
rustfmt ,此选项有用。
也可为每个缓冲区单独设置 b:rustfmt_autosave_if_config_present ,优先
于全局设置。
g:rustfmt_fail_silently
g:rustfmt_fail_silently
设为 1 时,'rustfmt' 不会用错误填充 location-list 。省略时默认为 0:
let g:rustfmt_fail_silently = 0
g:rustfmt_options
g:rustfmt_options
设置传递给 'rustfmt' 的选项字符串。--write-mode 已经设为 "overwrite"。
省略时默认为 '':
let g:rustfmt_options = ''
g:rustfmt_emit_files
g:rustfmt_emit_files
省略时,rust.vim 会试图根据 rustfmt 报告的版本来检测应传递给该命令的合
适参数。设置时,会传递给 rustfmt "--emit=files" (值为 1 时) 或者
'--write-mode=overwrite' (值为 0 时)。
let g:rustfmt_emit_files = 0
g:rustfmt_detect_version
g:rustfmt_detect_version
设为 1 时,会试图解析 "rustfmt" 的版本输出。为效能起见,缺省关闭
let g:rustfmt_detect_version = 1
g:rustfmt_find_toml
g:rustfmt_find_toml
设为 1 时,会试图从当前路径向上寻找 rustfmt.toml 。为效能起见,缺省关
闭
let g:rustfmt_find_toml = 1
g:rust_playpen_url
g:rust_playpen_url
覆盖用作 playpen (rust 语言快速实验场) 的 url:
let g:rust_playpen_url = 'https://play.rust-lang.org/'
g:rust_shortener_url
g:rust_shortener_url
覆盖用作短 url 生成器的 url:
let g:rust_shortener_url = 'https://is.gd/'
g:rust_clip_command
g:rust_clip_command
设置在 OS 里把 Rust Play url 复制到剪贴板的命令:
let g:rust_clip_command = 'xclip -selection clipboard'
g:cargo_makeprg_params
g:cargo_makeprg_params
设置传给 cargo 的参数字符串。省略时默认为 "$*":
let g:cargo_makeprg_params = 'build'
g:cargo_shell_command_runner
g:cargo_shell_command_runner
用于改变为 :Cargo 、 :Cbuild 、 :Crun 等 cargo 命令运行外壳命令的方
法。
缺省使用 :terminal ,在终端窗口里异步运行外壳命令。但如果希望改用
:! 来运行命令,可指定:
let g:cargo_shell_command_runner = '!'
Syntastic 集成 rust-syntastic
rustc 。
由于主流 Rust 项目现在几乎都使用 Cargo 构建,因此缺省的检查器为 "cargo"。
let g:syntastic_rust_checkers = ['cargo']
如有需要,可将 g:syntastic_rust_checkers 设为其他值。
g:rust_cargo_avoid_whole_workspace
b:rust_cargo_avoid_whole_workspace
g:rust_cargo_avoid_whole_workspace
在编辑 Cargo 工作空间组成部分的箱 (crate) 时,此选项设为 1 (缺省) 会直
接在箱目录而非工作空间目录里执行 'cargo'。设为 0 则反之 - 不过要谨慎使
用,在庞大的工作空间里,Cargo 命令因此会消耗更多时间,且 Syntastic 错
误列表也会包含工作空间所有箱里出现的错误。
let g:rust_cargo_avoid_whole_workspace = 0
g:rust_cargo_check_all_targets
b:rust_cargo_check_all_targets
g:rust_cargo_check_all_targets
设为 1 时,Syntastic 执行 cargo 时会传入 --all-targets 选项,从而
lint 包里的所有目标 (targets)。
缺省为 0。
g:rust_cargo_check_all_features
b:rust_cargo_check_all_features
g:rust_cargo_check_all_features
设为 1 时,Syntastic 执行 cargo 时会传入 --all-features 选项,从而
lint 包里的所有特性 (features)。
缺省为 0。
g:rust_cargo_check_examples
b:rust_cargo_check_examples
g:rust_cargo_check_examples
设为 1 时,Syntastic 执行 cargo 时会传入 --examples 选项,使得 lint
时不会排除示例。示例通常放在箱的 examples/ 目录里。
缺省为 0。
g:rust_cargo_check_tests
b:rust_cargo_check_tests
g:rust_cargo_check_tests
设为 1 时,Syntastic 执行 cargo 时会传入 --tests 选项,使得 lint 时
不会排除测试。测试通常放在箱的 tests/ 目录里。
缺省为 0。
g:rust_cargo_check_benches
b:rust_cargo_check_benches
g:rust_cargo_check_benches
设为 1 时,Syntastic 执行 cargo 时会传入 --benches 选项,基准测试通
常放在箱的 benches/ 目录里。
缺省为 0。
auto-pairs 集成 rust-auto-pairs
g:rust_keep_autopairs_default
不为 Rust 文件类型修改 auto-pairs 缺省值。缺省为 0。
命 令 rust-commands
调用 Cargo<args> :Cargo
运行 "cargo",并传入给定的参数。
:Cbuild <args> :Cbuild
` "cargo build" 的快捷方式。
:Cclean <args> :Cclean
"cargo clean" 的快捷方式。
:Cdoc <args> :Cdoc
"cargo doc" 的快捷方式。
:Cinit <args> :Cinit
"cargo init" 的快捷方式。
:Crun <args> :Crun
"cargo run" 的快捷方式。
:Ctest <args> :Ctest
"cargo test" 的快捷方式。
:Cupdate <args> :Cupdate
"cargo update" 的快捷方式。
:Cbench <args> :Cbench
"cargo bench" 的快捷方式。
:Csearch <args> :Csearch
"cargo search" 的快捷方式。
:Cpublish <args> :Cpublish
"cargo publish" 的快捷方式。
:Cinstall <args> :Cinstall
"cargo install" 的快捷方式。
:Cruntarget <args> :Cruntarget
根据当前打开的缓冲区,执行 "cargo run --bin" 或
"cargo run --example" 的快捷方式。
排版
注意: 这些命令仅用于运行单个 Rust 文件。一般 Rust 开发流程通常无需如此。要在
Vim 里构建 Rust 箱 (crate),可用 Vim 的 make、Synastic 或利用其他插件的功能。
:RustRun [args] :RustRun
:RustRun! [rustc-args] [--] [args]
编译并运行当前文件。如果有未保存的改动,先用 :update 保存。
如果当前文件为无名缓冲区,会先写入一个临时文件。编译后的二进制
代码总会放在一个临时目录里,但从当前目录处执行。
:RustRun 接受的参数会被传递给编译后的代码。
指定 ! 时,参数会传递给 rustc 而非编译后的代码。但可用 "--" 参
数分隔 rustc 的参数以及传递给编译后代码的参数。
g:rustc_path 给出时,会用作 rustc 的路径。默认为在 $PATH 中
找到的 "rustc"。
:RustExpand [args] :RustExpand
:RustExpand! [TYPE] [args]
使用 --pretty 扩展当前文件,并在新分割窗口中显示结果。如果当前
文件有未保存的改动,先用 :update 保存。如果当前文件为无名缓
冲区,会先写入一个临时文件。
:RustExpand 接受的参数会被传递给 rustc。主要用来指定各种
--cfg 配置。
指定 ! 时,首个参数会被传给 rustc 用于指定 --pretty 的扩展类
型。缺省为 "expanded"。
g:rustc_path 给出时,会用作 rustc 的路径。默认为在 $PATH 中
找到的 "rustc"。
:RustEmitIr [args] :RustEmitIr
编译当前文件到 LLVM IR,并在新分割窗口中显示结果。如果当前文件
有未保存的改动,先用 :update 保存。如果当前文件为无名缓冲
区,会先写入一个临时文件。
:RustEmitIr 接受的参数会被传递给 rustc。
g:rustc_path 给出时,会用作 rustc 的路径。默认为在 $PATH 中
找到的 "rustc"。
:RustEmitAsm [args] :RustEmitAsm
编译当前文件到汇编程序,并在新分割窗口中显示结果。如果当前文件
有未保存的改动,先用 :update 保存。如果当前文件为无名缓冲
区,会先写入一个临时文件。
:RustEmitAsm 接受的参数会被传递给 rustc。
g:rustc_path 给出时,会用作 rustc 的路径。默认为在 $PATH 中
找到的 "rustc"。
运行测试
[options] :RustTest
当前缓冲区在 cargo 项目中时,会用 "cargo test" 命令运行光标所
在的测试。如果该命令在光标下没找到任何测试函数,停止并报错。
给出 [N] 时,会调整新窗口大小为 N 行或列。
给出 ! 时,无视当前光标位置,运行所有测试。
[options] 给出时,会作为参数传递给 "cargo" 命令。
当前缓冲区在 cargo 项目之外时,作为后备,此命令会运行
"rustc --test" 命令而非 "cargo test"。无论有无 ! 都会运行所有
的测试,这是因为 rustc 无法指定特定的测试函数。此时 [options]
是传给 "rustc" 命令的参数。
接受可选修饰符 (见 <mods> ):
:tab RustTest
:belowright 16RustTest
:leftabove vert 80RustTest
rust.vim 调试
[filename] :RustInfoToFile
把 Vim Rust 插件的调试信息保存到给定文件,如果文件已存在,会覆
盖原有内容。