檢視原始碼 edlin (stdlib v6.2)
用於 Erlang Shell 的行和輸入解譯器。
此模組讀取輸入,處理透過 edlin_key 設定的任何跳脫序列,並輸出動作請求。這些動作請求會由模組 group
或 user_drv
處理。
按鍵配置
您可以設定自訂的按鍵配置來覆寫預設的按鍵配置。這可以透過在 Erlang 啟動前設定 stdlib 應用程式參數 shell_keymap
來完成。如果您希望在所有 Erlang Shell 中都有相同的按鍵映射,您可以在您使用者的家目錄中放置一個 config 檔案,然後設定 ERL_FLAGS 以在啟動時載入它。例如:
$ cat $HOME/.erlang_keymap.config
[{stdlib,
[{shell_keymap,
#{ normal => #{ "\^[A" => clear } }
}]
}].
$ ERL_FLAGS="-config $HOME/.erlang_keymap" erl
目前的按鍵映射配置可以透過 edlin:keymap() 取得。如果指定了自訂的按鍵映射或按鍵映射檔案,則會與預設的按鍵映射合併。
按鍵映射是一個由多個映射組成的映射,其中父映射的鍵對應於 shell 中不同的編輯模式。目前支援的有效模式為 normal
和 search
。
子映射中的鍵是終端機在按下按鍵時發送的跳脫序列,每個值都是如下所示的有效動作。
預設的 atom 用於指定當按下沒有任何映射的按鍵時應該發生的動作。通常用於退出模式。
有關預設按鍵映射的更多資訊,請參閱 tty - 命令列介面。
動作
以下命令是用於在一般 shell 上切換輸入模式或導覽或操作換行的內建動作請求。換行支援多行。
auto_blink
- 自動關閉最近匹配的開括號。backward_char
- 向後移動一個字元。backward_delete_char
- 刪除游標後面的字元。backward_delete_word
- 刪除游標後面的單字。backward_kill_line
- 刪除從游標到行首的所有字元,並將它們儲存在剪貼緩衝區中。backward_kill_word
- 刪除游標後面的單字,並將其儲存在剪貼緩衝區中。backward_line
- 向後移動一行。backward_word
- 向後移動一個單字。beginning_of_expression
- 移動到運算式的開頭。beginning_of_line
- 移動到行首。clear
- 清除螢幕。clear_line
- 清除目前的運算式。end_of_expression
- 移動到運算式的結尾。end_of_line
- 移動到行尾。forward_char
- 向前移動一個字元。forward_delete_char
- 刪除游標下的字元。forward_line
- 向前移動一行。forward_word
- 向前移動一個單字。help
- 顯示游標左側最近的模組或函式的說明。help_full
- 顯示游標左側最近的模組或函式的完整說明文字。history_down
- 移動到歷史記錄中的下一個項目。history_up
- 移動到歷史記錄中的上一個項目。kill_line
- 刪除從游標到行尾的所有字元,並將它們儲存在剪貼緩衝區中。kill_word
- 刪除游標下的單字,並將其儲存在剪貼緩衝區中。move_expand_down
- 在展開區域(例如,說明或 Tab 完成分頁器)中向下移動一行。move_expand_up
- 在展開區域(例如,說明或 Tab 完成分頁器)中向上移動一行。new_line_finish
- 在行尾新增一個換行符號,並嘗試評估目前的運算式。newline
- 在游標位置新增一個換行符號。open_editor
- 在編輯器中開啟目前的行,例如,EDITOR="code -w" 會在 vs code 中開啟一個緩衝區。請注意,您需要將一個旗標傳遞給編輯器,以便在您關閉緩衝區時通知 shell。redraw_line
- 重新繪製目前的行。scroll_expand_down
- 在展開區域(例如,說明或 Tab 完成分頁器)中向下捲動五行。scroll_expand_up
- 在展開區域(例如,說明或 Tab 完成分頁器)中向上捲動五行。search_cancel
- 取消目前的搜尋。search_found
- 接受目前的搜尋結果並提交它。search_quit
- 接受目前的搜尋結果,但在提交之前編輯它。search
- 進入搜尋模式,搜尋歷史記錄。skip_down
- 跳到歷史記錄中與目前搜尋運算式相符的下一行。skip_up
- 跳到歷史記錄中與目前搜尋運算式相符的上一行。tab_expand_full
- 輸出所有可能的 Tab 完成。tab_expand_quit
- 返回一般模式。tab_expand
- 自動完成目前的單字,或顯示 5 行可能的完成。transpose_char
- 將游標後面的字元與前面的字元交換。transpose_word
- 將游標後面的單字與前面的單字交換。yank
- 在游標位置插入剪貼緩衝區的內容。