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 將不會儲存歷程記錄檔案。