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, Right | 将光标向右移动一个字符 |
Ctrl-H, Backspace | 删除光标前的字符 |
Ctrl-I, Tab | 下一个补全 |
Ctrl-J, Ctrl-M, Enter | 完成行输入 |
Ctrl-K | 从光标到行尾删除 |
Ctrl-L | 清除屏幕 |
Ctrl-N, Down | 历史记录中的下一个匹配项 |
Ctrl-P, Up | 历史记录中的上一个匹配项 |
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 不会存储历史记录文件。