跳到主要内容

编辑

基于 linenoise 的 CLI 编辑器目前仅适用于 macOS 和 Linux。

Goose 的 CLI 使用基于 linenoise 的行编辑库,其快捷键基于 readline 的 Emacs 模式。以下为可用命令列表。

移动

按键操作
Left向后移动一个字符
Right向前移动一个字符
Up上移一行。若已在首行,则移动到上一条历史记录
Down下移一行。若已在末行,则移动到下一条历史记录
Home移动到缓冲区开头
End移动到缓冲区末尾
Ctrl+Left向后移动一个单词
Ctrl+Right向前移动一个单词
Ctrl+A移动到缓冲区开头
Ctrl+B向后移动一个字符
Ctrl+E移动到缓冲区末尾
Ctrl+F向前移动一个字符
Alt+Left向后移动一个单词
Alt+Right向前移动一个单词

历史记录

按键操作
Ctrl+P移动到上一条历史记录
Ctrl+N移动到下一条历史记录
Ctrl+R搜索历史记录
Ctrl+S搜索历史记录
Alt+<移动到第一条历史记录
Alt+>移动到最后一条历史记录
Alt+N搜索历史记录
Alt+P搜索历史记录

文本编辑

按键操作
Backspace删除前一个字符
Delete删除下一个字符
Ctrl+D删除下一个字符。缓冲区为空时,结束编辑
Ctrl+H删除前一个字符
Ctrl+K删除光标之后的所有内容
Ctrl+T交换当前字符与下一个字符
Ctrl+U删除全部文本
Ctrl+W删除前一个单词
Alt+C将下一个单词转换为首字母大写
Alt+D删除下一个单词
Alt+L将下一个单词转换为小写
Alt+R删除全部文本
Alt+T交换当前单词与下一个单词
Alt+U将下一个单词转换为大写
Alt+Backspace删除前一个单词
Alt+\删除光标周围空格

补全

按键操作
Tab自动补全。补全时切换到下一项
Shift+Tab补全时切换到上一项
Esc+Esc补全时撤销自动补全

其他

按键操作
Enter执行查询。若查询未完成,则在缓冲区末尾插入换行
Ctrl+J执行查询。若查询未完成,则在缓冲区末尾插入换行
Ctrl+C取消当前查询编辑
Ctrl+G取消当前查询编辑
Ctrl+L清屏
Ctrl+O取消当前查询编辑
Ctrl+X在光标后插入换行
Ctrl+Z挂起 CLI 并返回 shell,使用 fg 恢复

外部编辑器模式

使用 .edit\e 在外部文本编辑器中打开查询。

  • 单独输入时,会打开上一条命令进行编辑。
  • 在多行命令中使用时,会打开当前命令进行编辑。

编辑器按 GOOSE_EDITOREDITORVISUAL 的顺序选择第一个已设置的环境变量。若都未设置,则使用 vi

此功能仅在基于 linenoise 的 CLI 编辑器中可用,目前支持 macOS 和 Linux。

使用 Read-Line

如果你愿意,也可以使用 rlwrap 让 shell 直接使用 read-line。此时使用 Shift+Enter 插入换行,Enter 执行查询:

rlwrap --substitute-prompt="D " goose -batch