本页内容

deno repl,交互式脚本提示

deno repl 启动一个读取-求值-打印-循环,它允许您在全局上下文中交互式地构建程序状态,这对于快速原型设计和检查代码片段特别有用。

⚠️ Deno REPL 支持 JavaScript 和 TypeScript,但 TypeScript 代码不会进行类型检查,而是会在后台被转译为 JavaScript。

⚠️ 为了便于复制粘贴代码示例,Deno REPL 支持导入和导出声明。这意味着您可以粘贴包含 import ... from ...;export class ...export function ... 的代码,它将像执行常规 ES 模块一样工作。

特殊变量 跳转到标题

REPL 提供了一些始终可用的特殊变量

标识符 描述
_ 返回最后评估的表达式
_error 返回最后抛出的错误
Deno 1.14.3
exit using ctrl+d or close()
> "hello world!"
"hello world!"
> _
"hello world!"
> const foo = "bar";
undefined
> _
undefined

特殊函数 跳转到标题

REPL 在全局范围内提供了一些函数

函数 描述
clear() 清除整个终端屏幕
close() 关闭当前 REPL 会话

--eval 标志 跳转到标题

--eval 标志允许您在进入 REPL 之前在运行时运行一些代码。这对于导入您在 REPL 中常用的代码或以某种方式修改运行时很有用。

$ deno repl --allow-net --eval 'import { assert } from "https://deno.land/std/assert/mod.ts"'
Deno 1.36.0
exit using ctrl+d, ctrl+c, or close()
> assert(true)
undefined
> assert(false)
Uncaught AssertionError
    at assert (https://deno.land/[email protected]/assert/assert.ts:7:11)
    at <anonymous>:2:1

--eval-file 标志 跳转到标题

--eval-file 标志允许您在进入 REPL 之前运行指定文件中的代码。与 --eval 标志类似,这对于导入您在 REPL 中常用的代码或以某种方式修改运行时很有用。

文件可以指定为路径或 URL。URL 文件会被缓存,并且可以通过 --reload 标志重新加载。

如果也指定了 --eval,那么 --eval-file 文件会在 --eval 代码之前运行。

$ deno repl --eval-file=https://examples.deno.land/hello-world.ts,https://deno.land/std/encoding/ascii85.ts
Download https://examples.deno.land/hello-world.ts
Hello, World!
Download https://deno.land/std/encoding/ascii85.ts
Deno 1.20.5
exit using ctrl+d or close()
> rfc1924 // local (not exported) variable defined in ascii85.ts
"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!#$%&()*+-;<=>?@^_`{|}~"

相对导入路径解析 跳转到标题

如果 --eval-file 指定了一个包含相对导入的代码文件,那么运行时将尝试相对于当前工作目录解析这些导入。它不会尝试相对于代码文件的位置解析它们。当 --eval-file 与模块文件一起使用时,这可能会导致“模块未找到”错误。

$ deno repl --eval-file=https://deno.land/std/hash/md5.ts
error in --eval-file file https://deno.land/std/hash/md5.ts. Uncaught TypeError: Module not found "file:///home/encoding/hex.ts".
    at async <anonymous>:2:13
Deno 1.20.5
exit using ctrl+d or close()
> close()
$ deno repl --eval-file=https://deno.land/std/encoding/hex.ts
Download https://deno.land/std/encoding/hex.ts
Deno 1.20.5
exit using ctrl+d or close()
>

Tab 补全 跳转到标题

Tab 补全是在 REPL 中快速导航的关键功能。在按下 tab 键后,Deno 现在将显示所有可能的补全列表。

$ deno repl
Deno 1.14.3
exit using ctrl+d or close()
> Deno.read
readTextFile      readFile          readDirSync       readLinkSync      readAll           read
readTextFileSync  readFileSync      readDir           readLink          readAllSync       readSync

键盘快捷键 跳转到标题

按键 操作
Ctrl-A, Home 将光标移动到行首
Ctrl-B, Left 将光标向左移动一个字符
Ctrl-C 中断并取消当前编辑
Ctrl-D 如果行为空,则发出行结束信号
Ctrl-D, Del 如果行不为空,则删除光标下的字符
Ctrl-E, End 将光标移动到行尾
Ctrl-F,右箭头 将光标向右移动一个字符
Ctrl-H,退格键 删除光标前的字符
Ctrl-I,Tab 键 下一个补全选项
Ctrl-J,Ctrl-M,回车键 完成行输入
Ctrl-K 从光标到行尾删除
Ctrl-L 清除屏幕
Ctrl-N,下箭头 历史记录中的下一个匹配项
Ctrl-P,上箭头 历史记录中的上一个匹配项
Ctrl-R 反向搜索历史记录(Ctrl-S 向前,Ctrl-G 取消)
Ctrl-T 将前一个字符与当前字符互换
Ctrl-U 从行首到光标删除
Ctrl-V 插入任何特殊字符,而不执行其关联的操作
Ctrl-W 删除光标前的单词(使用空格作为单词边界)
Ctrl-X Ctrl-U 撤销
Ctrl-Y 从剪贴板粘贴
Ctrl-Y 从剪贴板粘贴(Meta-Y 粘贴下一个剪贴内容)
Ctrl-Z 挂起(仅限 Unix)
Ctrl-_ 撤销
Meta-0,1,...,- 指定数字作为参数。 开始一个负参数。
Meta < 移动到历史记录中的第一个条目
Meta > 移动到历史记录中的最后一个条目
Meta-B,Alt-Left 将光标移动到前一个单词
Meta-Backspace 从当前单词开头删除,或者如果在单词之间,则删除到前一个单词开头
Meta-C 将当前单词首字母大写
Meta-D 向前删除一个单词
Meta-F,Alt-Right 将光标移动到下一个单词
Meta-L 将下一个单词小写
Meta-T 互换单词
Meta-U 将下一个单词大写
Meta-Y 参见 Ctrl-Y
Ctrl-S 插入新行

DENO_REPL_HISTORY 跳转到标题

您可以使用DENO_REPL_HISTORY 环境变量来控制 Deno 存储 REPL 历史记录文件的位置。您可以将其设置为一个空值,Deno 不会存储历史记录文件。