221 个版本 (112 个稳定版本)
1.71.23 | 2024年5月28日 |
---|---|
1.71.21 | 2024年3月24日 |
1.71.19 | 2023年12月14日 |
1.71.15 | 2023年11月5日 |
0.6.10 | 2019年7月31日 |
在 开发工具 中排名 47
每月下载量 85 次
310KB
7K SLoC
IRust
跨平台 Rust Repl
您可以通过访问 https://gitpod.io/#https://github.com/sigmaSd/IRust 在不安装或设置的情况下尝试 IRust
关键词 / 小技巧
:help => 打印帮助信息,使用 :help full
查看完整版本
:reset => 重置 Repl
:show => 显示 Repl 当前代码(可选,取决于 rustfmt 格式化输出)
:add <dep_list> => 添加依赖项,也接受大多数 cargo add
参数,例如您可以使用 :add --path path_to_crate
导入本地依赖项
:type <expression> => 显示表达式类型,例如 :type vec!(5)
:time <expression> => 返回表达式执行所需的时间。例如::time 5+4
:time my_fun(arg1,arg2)
:time_release <expression> => 与 time
命令相同,但使用发布模式
:load => 将 Rust 文件加载到 Repl 中
:reload => 重新加载最后指定的文件
:pop => 删除 Repl 中的最后一行代码
:del <line_num> => 从 Repl 代码中删除特定行(行数从第一个表达式语句开始计数为 1)
:edit [编辑器] => 使用外部编辑器编辑内部缓冲区,例如::edit micro
。如果没有指定编辑器,则使用从 EDITOR 环境变量中指定的编辑器(如果设置了)。注意,一些 GUI 终端需要在编辑后使用 :sync
命令(vscode)。
:sync 将使用 :edit 和 GUI 编辑器(vscode)写入的更改同步到 repl。
:cd => 改变当前工作目录
:color <键> <值> => 在运行时更改令牌高亮颜色,有关令牌列表和值表示的详细信息,请查看主题部分,例如::color function red
:color 宏 #ff12ab
:color reset
:toolchain <值> => 在工具链之间切换,支持的值有:stable
、beta
、nightly
、default
:theme <值> => 如果没有使用参数,列出当前安装的主题;否则将 irust 设置为给定的主题,有关更多信息,请参阅主题部分
:check_statements true/false => 如果设置为 true,irust 将在将其插入到 repl 之前使用 cargo_check 检查每个语句(以分号结束的输入)
:bench => 运行 cargo bench
:asm <函数> => 显示指定函数的汇编代码,注意该函数必须是公共的,并且不能有独立语句/表达式(需要 cargo-show-asm)
:executor <executor> => 设置 IRust 使用的执行器,可用选项为:sync
、tokio
、async_std
,使用异步执行器时,await
可用于异步执行器,无需其他修改
:evaluator <评估器> => 设置评估器语句,例如::evaluator println!("{}",{$$})
等号右边的 $$
将由 IRust 替换为输入代码(默认评估器使用调试格式化)。要重置评估器为默认值,可以使用 :evaluator reset
:scripts: => 如果没有参数调用,则打印检测到的脚本列表;如果有参数调用,则打印该脚本信息(如果存在),如果有两个参数,则尝试激活/禁用脚本,例如::scripts Vim deactivate
:compile_time <开启/关闭> => 如果设置为开启,IRust 将在每个输入时打印编译时间,编译时间包括 rustc 编译和一些 IRust 代码(应该是微不足道的)
:compile_mode <调试/发布> => 设置 cargo 如何在发布或调试模式下编译代码
:main_result <值> => 更改主结果类型,可用选项有 Unit
和 Result
(即 Result<(), Box<dyn std::error::Error>>),使用 Result
作为类型允许在 repl 中使用 ?
而无需任何样板代码
:dbg <表达式> => 使用(可选的表达式)启动 rust-lldb/rust-gdb,例如::dbg
或 :dbg fact(12)
,调试器可以在配置文件中指定。
:expand [函数] => 显示宏展开的结果,需要 https://github.com/dtolnay/cargo-expand,函数是可选的,例如 fn b
,然后 :expand b
:exit | :quit => 立即退出 IRust
$$ => 可以使用 $$ 将 shell 命令与 rust 代码混合,例如:let a = $$ls -l$$;
,此功能可以通过配置文件 en/dis 禁用。
:: => 运行 shell 命令,例如:::ls
可以使用箭头键循环查看命令历史。
可以通过设置环境变量 NO_COLOR
来禁用所有颜色。
要在 rust-analyzer 中启用通过 tab 完成功能,请在配置中将 enable_rust_analyzer
设置为 true。
快捷键
ctrl-l 清屏
ctrl-c 清除行
ctrl-d 如果缓冲区为空则退出
ctrl-z [仅限 unix] 将 IRust 发送到后台
ctrl-r 搜索历史,再次按 ctrl-r 继续向前搜索历史,按 ctrl-s 向后搜索历史
ctrl-left/right 跳转到单词的开始/结束
HOME/END 跳转到行的开始/结束
Tab/ShiftTab 在完成建议之间循环
Alt-Enter | ctrl-s 添加换行符
ctrl-e 强制求值
ctrl-o->[+-]键 开始录制宏并保存到指定的键,如果再次点击 ctrl-o 则停止录制
ctrl-p->键 播放保存在指定键上的宏
ctrl-u 撤销
ctrl-y 重做
ctrl-x 删除当前行

Cli 命令
--help 打印帮助信息
--reset-config 将 IRust 配置重置为默认值
如果输入被管道传输到 IRust,则将其求值并退出,例如:echo '"hello".chars()' | irust
配置
IRust 配置文件位于
Linux: /home/$USER/.config/irust/config.toml
Win: C:\Users\$USER\AppData\Roaming\irust/config.toml
Mac: /Users/$USER/Library/Preferences/irust/config.toml
默认配置
# history
add_irust_cmd_to_history = true
add_shell_cmd_to_history = false
# colors
ok_color = "Blue"
eval_color = "White"
irust_color = "DarkBlue"
irust_warn_color = "Cyan"
out_color = "Red"
shell_color = "DarkYellow"
err_color = "DarkRed"
input_color = "Green"
insert_color = "White"
welcome_msg = ""
welcome_color = "DarkBlue"
# Rust analyzer
ra_inline_suggestion_color = "Cyan"
ra_suggestions_table_color = "Green"
ra_selected_suggestion_color = "DarkRed"
ra_max_suggestions = 5
enable_rust_analyzer = false
# other
first_irust_run = false
toolchain = "stable"
check_statements = true
auto_insert_semicolon = true
#use last output by replacing the specified marker
replace_marker = "$out"
replace_output_with_marker = false
# modify input prmopt
input_prompt = "In: "
output_prompt = "Out: "
# activate scripting feature
activate_scripting = false
# select executor (Sync, Tokio, Asyncstd)
executor = "Sync"
evaluator = ["println!(\"{:?}\", {\n", "\n});"]
compile_time = false
main_result = "Unit"
show_warnings = false
edition = "E2021"
debugger = "LLDB"
shell_interpolate = true
local_server = false
local_server_adress = "127.0.0.1:9000"
theme = "default"
主题
自 1.66.0
版本起,IRust
现在可以解析位于 $config_dir/irust/themes
下的任何主题文件,并用于高亮显示颜色。
要选择一个主题,请在 irust 配置中设置其名称。例如,要设置 themes/mytheme.toml
,请设置 theme = "mytheme"
颜色可以指定为名称(“red”)或十六进制表示(“#ff12ab”)。
默认主题文件(default.toml)
keyword = "magenta"
keyword2 = "dark_red"
function = "blue"
type = "cyan"
symbol = "red"
macro = "dark_yellow"
literal = "yellow"
lifetime = "dark_magenta"
comment = "dark_grey"
const = "dark_green"
ident = "white"
序言
IRust 自动在 xdg_data_dir/irust/irust_prelude
创建 irust_prelude
包,该包在启动时导入,对其(标记为 pub
)的任何更改在保存后都会立即反映在 repl 上。
脚本
IRust 支持脚本,在整个代码库中都有脚本可以响应的钩子,并且通常用命令回答 IRust。
有关更多信息,请参阅 SCRIPTS.md。
Vim 插件
对于 nvim,您可以使用 https://github.com/hkupty/iron.nvim(需要 irust 1.67.4)
旧方法
从版本 1.60.0
开始,IRust 支持通过在配置文件中将 local_server
更改为 true
来启动本地服务器。
这允许它被程序控制,从而允许编写使用此功能的 vim 插件,请参阅 https://github.com/sigmaSd/irust-vim-plugin
Jupyter Notebook
目前有一个易于安装的裸机内核,请参阅 https://github.com/sigmaSd/IRust/blob/master/crates/irust_repl/README.md#jupyter-kernel 了解说明
书籍
The IRust Book
旨在记录一些技巧和窍门 https://sigmasd.github.io/irust_book
版本
自动发布的版本由 github actions 上传,请参阅 https://github.com/sigmaSd/irust/releases
安装
cargo安装 irust
cargo binstall irust
(使用 cargo-binstall)- 还有一个 flaptak 软件包,它是自包含的,但有一些限制
构建
cargo b --release
它是如何工作的(随机抽取)
常见问题解答
1- 我想修改 irust,但 dbg!
与输出冲突!
我个人这样做
- 运行两个并排的终端
- 在第一个中运行
tty
,应该输出类似于/dev/pts/4
的内容 - 在第二个中运行
cargo r 2>/dev/pts4
现在,dbg!
语句将在第二个终端中打印,第一个终端中的输出不会混乱。
变更日志
依赖项
~3–14MB
~121K SLoC