查看源码 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 中的不同编辑模式。当前支持的有效模式是 normalsearch

子映射中的键是从终端按下键时发送的转义序列,每个值都是一个有效的操作,如下所示。

默认原子用于指定当按下没有映射的键时应发生的操作。通常用于退出模式。

有关默认按键映射的更多信息,请参见 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 - 在展开区域(例如帮助或标签补全分页器)中向下移动一行。

  • move_expand_up - 在展开区域(例如帮助或标签补全分页器)中向上移动一行。

  • new_line_finish - 在行尾添加一个换行符,并尝试计算当前表达式。

  • newline - 在光标位置添加一个换行符。

  • open_editor - 在编辑器中打开当前行,例如 EDITOR="code -w" 在 VS Code 中打开一个缓冲区。请注意,您需要向编辑器传递一个标志,以便在您关闭缓冲区时通知 Shell。

  • redraw_line - 重绘当前行。

  • scroll_expand_down - 在展开区域(例如帮助或标签补全分页器)中向下滚动五行。

  • scroll_expand_up - 在展开区域(例如帮助或标签补全分页器)中向上滚动五行。

  • search_cancel - 取消当前搜索。

  • search_found - 接受当前搜索结果并提交。

  • search_quit - 接受当前搜索结果,但在提交之前进行编辑。

  • search - 进入搜索模式,搜索历史记录。

  • skip_down - 跳到历史记录中与当前搜索表达式匹配的下一行。

  • skip_up - 跳到历史记录中与当前搜索表达式匹配的上一行。

  • tab_expand_full - 输出所有可能的标签补全。

  • tab_expand_quit - 返回正常模式。

  • tab_expand - 自动补全当前单词,或显示 5 行可能的补全。

  • transpose_char - 将光标后面的字符与前面的字符交换。

  • transpose_word - 将光标后面的单词与前面的单词交换。

  • yank - 在光标位置插入删除缓冲区的内容。

概述

类型

一个用于每个 Shell 模式的映射的映射,其中包含按键和操作对。

函数

获取 Shell 中使用的当前按键映射。父映射中的每个键表示一个Shell 模式,例如 normalsearch。与Shell 模式关联的每个映射都包含表示为字符串的按键序列,并与一个操作配对,该操作是上面提到的有效操作之一。

类型

链接到此类型

keymap()

查看源码 (未导出) (自 OTP 26.1 起)
-type keymap() :: #{atom() => #{string() | default => atom()}}.

一个用于每个 Shell 模式的映射的映射,其中包含按键和操作对。

函数

链接到此函数

keymap()

查看源码 (自 OTP 26.1 起)
-spec keymap() -> keymap().

获取 Shell 中使用的当前按键映射。父映射中的每个键表示一个Shell 模式,例如 normalsearch。与Shell 模式关联的每个映射都包含表示为字符串的按键序列,并与一个操作配对,该操作是上面提到的有效操作之一。