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 不会存储历史记录文件。