Ft_rust

Nvim :help 页面,从 生成源代码,使用 tree-sitter-vimdoc 解析器。


内容

1. 简介 rust-intro 2. 设置 rust-settings 3. 命令 rust-commands 4. 映射 rust-mappings

介绍 rust-intro

此插件为 Rust 文件类型提供语法和支持功能。它需要 Vim 8 或更高版本才能完全发挥作用。一些命令在早期版本中将无法使用。
此插件有一些可以在你的 vimrc 中定义的变量,可以改变插件的行为。
一些变量可以在缓冲区本地设置(:b 前缀),缓冲区本地设置将优先于全局 g: 设置。
g:rustc_path
g:rustc_path
将此选项设置为 rustc 的路径,供 :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
将此选项设置为打开基本的 隐藏 支持。
let g:rust_conceal = 1
g:rust_conceal_mod_path
g:rust_conceal_mod_path
将此选项设置为打开连接标记 "::" 的路径的 隐藏
let g:rust_conceal_mod_path = 1
g:rust_conceal_pub
g:rust_conceal_pub
将此选项设置为打开 "pub" 标记的 隐藏
let g:rust_conceal_pub = 1
g:rust_recommended_style
g:rust_recommended_style
将此选项设置为启用 vim 缩进和文本宽度设置,以符合 Rust 标准库的样式约定(即使用 4 个空格进行缩进,并将 'textwidth' 设置为 99)。此选项默认启用。要禁用它
let g:rust_recommended_style = 0
g:rust_fold
g:rust_fold
将此选项设置为打开 折叠
let g:rust_fold = 1
值 效果
0 不折叠 1 大括号块被折叠。默认情况下所有折叠都处于打开状态。 2 大括号块被折叠。 'foldlevel' 保持全局值(默认情况下所有折叠都处于关闭状态)。
g:rust_bang_comment_leader
g:rust_bang_comment_leader
将此选项设置为 1 以保留使用 /*! 语法编写的多行文档注释中的 leader。
let g:rust_bang_comment_leader = 1
g:rust_use_custom_ctags_defs
g:rust_use_custom_ctags_defs
如果你为 Rust 定制了 ctags 定义,并且不希望使用 rust.vim 中包含的定义,则将此选项设置为 1。
let g:rust_use_custom_ctags_defs = 1
注意:rust.vim 的内置定义仅用于 Tagbar Vim 插件(如果安装了它)并且没有检测到 Universal Ctags。这是因为 Universal Ctags 在与 Tagbar 一起使用时,已经内置了对 Rust 的支持。
此外,请注意,当使用 Universal Ctags 以外的 ctags 时,它不会在生成 Vim 可用于在不同源文件之间导航定义的 tags 文件时自动使用。如果你想生成 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" 使用错误填充 位置列表。如果未指定,则默认为 0。
let g:rustfmt_fail_silently = 0
g:rustfmt_options
g:rustfmt_options
将此选项设置为要传递给 "rustfmt" 的选项字符串。写入模式已设置为 "overwrite"。如果未指定,则默认为 ''。
let g:rustfmt_options = ''
g:rustfmt_emit_files
g:rustfmt_emit_files
如果未指定,rust.vim 会尝试根据其报告的版本检测要传递给 rustfmt 的正确参数。否则,它会确定是使用 '--emit=files'(提供 1 时)还是 '--write-mode=overwrite' 运行 rustfmt。
let g:rustfmt_emit_files = 0
g:rust_playpen_url
g:rust_playpen_url
将此选项设置为覆盖要使用的 playpen 的 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
将此选项设置为在你的操作系统中用于将 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 命令 :Cargo:Cbuild:Crun ... 的 shell 命令。默认情况下,使用 :terminal 在终端窗口中异步运行 shell 命令。但如果你更喜欢 :! 来运行命令,则可以指定它。
let g:cargo_shell_command_runner = '!'

与 Syntastic 集成 rust-syntastic

此插件自动与 Syntastic 检查器集成。提供两个检查器:rustccargo。后者调用 cargo 来构建代码,而前者将单个编辑的 '.rs' 文件作为编译目标直接传递给 Rust 编译器 rustc
由于 Cargo 如今几乎完全用于构建 Rust 代码,因此 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 工作区一部分的板条箱时,如果此选项设置为 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 时,--all-targets 选项将在 Syntastic 执行它时传递给 cargo,允许对包下的所有目标进行代码风格检查。默认值为 0。
g:rust_cargo_check_all_features
b:rust_cargo_check_all_features
g:rust_cargo_check_all_features
当设置为 1 时,--all-features 选项将在 Syntastic 执行它时传递给 cargo,允许对包的所有功能进行代码风格检查。默认值为 0。
g:rust_cargo_check_examples
b:rust_cargo_check_examples
g:rust_cargo_check_examples
当设置为 1 时,--examples 选项将在 Syntastic 执行它时传递给 cargo,以防止将示例排除在代码风格检查之外。示例通常位于板条箱的 examples/ 目录下。默认值为 0。
g:rust_cargo_check_tests
b:rust_cargo_check_tests
g:rust_cargo_check_tests
当设置为 1 时,--tests 选项将在 Syntastic 执行它时传递给 cargo,以防止将测试排除在代码风格检查之外。测试通常位于板条箱的 tests/ 目录下。默认值为 0。
g:rust_cargo_check_benches
b:rust_cargo_check_benches
g:rust_cargo_check_benches
当设置为 1 时,--benches 选项将在 Syntastic 执行它时传递给 cargo。基准测试通常位于板条箱的 benches/ 目录下。默认值为 0。

与 auto-pairs 集成 rust-auto-pairs

此插件自动配置 auto-pairs 插件,以防止重复单引号,因为单引号通常用于生命周期注释而不是用于单字符字面量。
g:rust_keep_autopairs_default
g:rust_keep_autopairs_default
不要覆盖 Rust 文件类型的 auto-pairs 默认设置。默认值为 0。
调用 Cargo
此插件定义了从 Vim 中调用 Cargo 的非常简单的快捷方式。
: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 --bincargo run --example 的快捷方式,具体取决于当前打开的缓冲区。
格式化
:RustFmt :RustFmt
在当前缓冲区上运行 g:rustfmt_command。如果 g:rustfmt_options 设置,则这些选项将传递给可执行文件。
如果 g:rustfmt_fail_silently 为 0(默认值),则它会使用 g:rustfmt_command 的错误填充 位置列表。如果 g:rustfmt_fail_silently 设置为 1,则它不会填充 位置列表
:RustFmtRange :RustFmtRange
使用选定范围运行 g:rustfmt_command。有关任何其他信息,请参见 :RustFmt
Playpen 集成
:RustPlay :RustPlay
此命令仅在安装了 web-api.vim 时有效(可在 https://github.com/mattn/webapi-vim 获取)。它会将当前选区(如果没有选区,则将整个当前缓冲区)发送到 Rust Playpen,并用 playpen 的缩短 URL 发出消息。
g:rust_playpen_url 是 playpen 的基本 URL,默认值为 "https://play.rust-lang.org/"。
g:rust_shortener_url 是缩短器的基本 URL,默认值为 "https://is.gd/"。
g:rust_clip_command 是用于将 playpen URL 复制到系统剪贴板的命令。
单个 Rust 文件的评估
注意: 这些命令仅在处理独立 Rust 文件时有用,这通常不是常见 Rust 开发中的情况。如果您希望从 Vim 内部构建 Rust 包,则应该使用 Vim 的 make、Syntastic 或其他插件的功能。
: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。
运行测试
:[N]RustTest[!] [options] :RustTest
当当前缓冲区位于具有 "cargo test" 命令的货物项目中时,运行光标下的测试。如果命令在光标下没有找到任何测试函数,它将停止并显示错误消息。
当给出 N 时,将新窗口的大小调整为 N 行或列。
当给出 ! 时,运行所有测试,无论当前光标位置如何。
当给出 [options] 时,它将传递给 "cargo" 命令参数。
当当前缓冲区位于货物项目之外时,该命令将运行 rustc --test 命令而不是 "cargo test" 作为回退。所有测试都将运行,无论是否添加 !,因为无法使用 rustc 运行特定测试函数。在这种情况下,[options] 将传递给 rustc 命令参数。
接受可选修饰符(参见 <mods>
:tab RustTest
:belowright 16RustTest
:leftabove vert 80RustTest
rust.vim 调试
:RustInfo :RustInfo
发出 Vim Rust 插件的调试信息。
:RustInfoToClipboard :RustInfoClipboard
将 Vim Rust 插件的调试信息保存到默认寄存器。
:RustInfoToFile [filename] :RustInfoToFile
将 Vim Rust 插件的调试信息保存到给定文件,并覆盖它。
此插件为 [[]] 定义映射以支持悬挂缩进。
主要
命令索引
快速参考