查看源码 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
。
子映射中的键是从终端按下键时发送的转义序列,每个值都是一个有效的操作,如下所示。
默认原子用于指定当按下没有映射的键时应发生的操作。通常用于退出模式。
有关默认按键映射的更多信息,请参见 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
- 在光标位置插入删除缓冲区的内容。