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 縮排和 textwidth 設定,使其符合 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,以保留使用 /*! 語法的多行文件註解上的領導符號
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 時,它不會在產生 tags 檔案時自動使用,Vim 可以使用這些檔案導覽到不同來源檔案中的定義。如果您想要產生 tags 檔案,請隨意將 rust.vim/ctags/rust.ctags 複製到您自己的 ~/.ctags 中。
g:ftplugin_rust_source_path
g:ftplugin_rust_source_path
將此選項設定為應附加到 Rust 原始程式檔的 'path' 的路徑
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
如果任何父目錄(直接導向正在編輯的檔案)中存在 rustfmt.toml 檔案,則將此選項設定為 1,以自動設定 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 的網址
let g:rust_playpen_url = 'https://play.rust-lang.org/'
g:rust_shortener_url
g:rust_shortener_url
設定此選項以覆寫網址縮短器的網址
let g:rust_shortener_url = 'https://is.gd/'
g:rust_clip_command
g:rust_clip_command
將此選項設定為您作業系統中用於將 Rust Play 網址複製到剪貼簿的命令
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 工作區一部分的 crate,且此選項設定為 1(預設值)時,cargo 將直接在該 crate 目錄中執行,而不是在工作區目錄中執行。設定為 0 會阻止此行為 - 但是請注意,如果您在大型工作區中工作,Cargo 命令可能需要更多時間,此外,Syntastic 錯誤列表可能包含工作區中的所有 crate。
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 選項傳遞給 cargo,允許檢查套件下的所有目標。預設值為 0。
g:rust_cargo_check_all_features
b:rust_cargo_check_all_features
g:rust_cargo_check_all_features
當設定為 1 時,當 Syntastic 執行 cargo 時,將會把 --all-features 選項傳遞給 cargo,允許檢查套件的所有功能。預設值為 0。
g:rust_cargo_check_examples
b:rust_cargo_check_examples
g:rust_cargo_check_examples
當設定為 1 時,當 Syntastic 執行 cargo 時,將會把 --examples 選項傳遞給 cargo,以防止範例被排除在檢查之外。範例通常位於 crate 的 examples/ 目錄下。預設值為 0。
g:rust_cargo_check_tests
b:rust_cargo_check_tests
g:rust_cargo_check_tests
當設定為 1 時,當 Syntastic 執行 cargo 時,將會把 --tests 選項傳遞給 cargo,以防止測試被排除在檢查之外。測試通常位於 crate 的 tests/ 目錄下。預設值為 0。
g:rust_cargo_check_benches
b:rust_cargo_check_benches
g:rust_cargo_check_benches
當設定為 1 時,當 Syntastic 執行 cargo 時,將會把 --benches 選項傳遞給 cargo。基準測試通常位於 crate 的 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 crates,則應該使用 Vim 的 make、Syntastic 或其他外掛程式的功能。
:RustRun [args] :RustRun
:RustRun! [rustc-args] [--] [args] 編譯並執行目前的檔案。如果檔案有未儲存的變更,它會先使用 :update 儲存。如果目前的檔案是未命名的緩衝區,則會先將其寫入臨時檔案。編譯後的二進制檔案會始終放置在臨時目錄中,但會從目前目錄執行。
傳遞給 :RustRun 的引數將會傳遞給編譯後的二進制檔案。
如果指定了 !,則引數會傳遞給 rustc。 "--" 引數會將 rustc 引數與傳遞給二進制檔案的引數分開。
如果定義了 g:rustc_path,則會將其用作 rustc 的路徑。否則,會假定 rustc 可以在 $PATH 中找到。
:RustExpand [args] :RustExpand
:RustExpand! [TYPE] [args] 使用 --pretty 展開目前的檔案,並在新的分割視窗中顯示結果。如果目前的檔案有未儲存的變更,它會先使用 :update 儲存。如果目前的檔案是未命名的緩衝區,則會先將其寫入臨時檔案。
傳遞給 :RustExpand 的引數將會傳遞給 rustc。這主要用於指定各種 --cfg 配置。
如果指定了 !,則第一個引數是要傳遞給 rustc --pretty 的展開類型。否則,預設為 "expanded"。
如果定義了 g:rustc_path,則會將其用作 rustc 的路徑。否則,會假定 rustc 可以在 $PATH 中找到。
:RustEmitIr [args] :RustEmitIr
將目前檔案編譯為 LLVM IR,並在新的分割視窗中顯示結果。如果目前的檔案有未儲存的變更,它會先使用 :update 儲存。如果目前的檔案是未命名的緩衝區,則會先將其寫入臨時檔案。
傳遞給 :RustEmitIr 的引數將會傳遞給 rustc。
如果定義了 g:rustc_path,則會將其用作 rustc 的路徑。否則,會假定 rustc 可以在 $PATH 中找到。
:RustEmitAsm [args] :RustEmitAsm
將目前檔案編譯為組語,並在新的分割視窗中顯示結果。如果目前的檔案有未儲存的變更,它會先使用 :update 儲存。如果目前的檔案是未命名的緩衝區,則會先將其寫入臨時檔案。
傳遞給 :RustEmitAsm 的引數將會傳遞給 rustc。
如果定義了 g:rustc_path,則會將其用作 rustc 的路徑。否則,會假定 rustc 可以在 $PATH 中找到。
執行測試
:[N]RustTest[!] [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 除錯
:RustInfo :RustInfo
發出 Vim Rust 外掛程式的除錯資訊。
:RustInfoToClipboard :RustInfoClipboard
將 Vim Rust 外掛程式的除錯資訊儲存到預設暫存器。
:RustInfoToFile [filename] :RustInfoToFile
將 Vim Rust 外掛程式的除錯資訊儲存到指定的檔案,並覆寫該檔案。

MAPPINGS rust-mappings

此外掛程式定義了 [[]] 的對應,以支援懸掛縮排。
主要
命令索引
快速參考