跳到主要內容

deno repl,互動式指令碼提示

deno repl 會啟動一個讀取-評估-列印-迴圈,讓您在全域背景中互動式建立程式狀態,對於快速建立原型和檢查程式碼片段特別有用。

⚠️ Deno REPL 支援 JavaScript 和 TypeScript,但不會類型檢查 TypeScript 程式碼,而是會在幕後轉譯成 JavaScript。

⚠️ 為了讓複製貼上程式碼範例更方便,Deno REPL 支援 import 和 export 宣告。這表示您可以貼上包含 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/std@0.197.0/assert/assert.ts:7:11)
at <anonymous>:2:1

--eval-file 旗標

--eval-file 旗標讓您在進入 REPL 之前執行指定檔案中的程式碼。如同 --eval 旗標,這對於匯入您在 REPL 中常用的程式碼,或以某種方式修改執行時間很有用。

檔案可以指定為路徑或網址。網址檔案會快取,並可透過 --reload 旗標重新載入。

如果也指定了 --eval,則會在 --eval 程式碼之前執行 --eval-file 檔案。

$ 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、向左將游標向左移動一個字元
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從 Yank 緩衝區貼上
Ctrl-Y從 Yank 緩衝區貼上 (使用 Meta-Y 貼上下一個 Yank)
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 將不會儲存歷程記錄檔案。