GNU Readline 风格笔记
GNU Readline 是一个用于命令行编辑的库,广泛应用于 Bash、Python REPL 等交互式终端。它支持两种主要编辑风格:Emacs 风格和 vi 风格,分别模仿了 Emacs 和 vi 编辑器的按键习惯。
1. Emacs 风格
说明
- 默认风格。
- 类似 Emacs 编辑器的快捷键,主要使用 Ctrl 和 Meta(Alt) 组合键。
常用快捷键
| 快捷键 | 功能说明 |
|---|---|
| Ctrl + A | 光标移到行首 |
| Ctrl + E | 光标移到行尾 |
| Ctrl + B | 光标左移一个字符 |
| Ctrl + F | 光标右移一个字符 |
| Alt + B | 光标左移一个单词 |
| Alt + F | 光标右移一个单词 |
| Ctrl + U | 删除光标到行首 |
| Ctrl + K | 删除光标到行尾 |
| Ctrl + W | 删除光标前一个单词 |
| Ctrl + Y | 粘贴最近删除文本 |
| Ctrl + L | 清屏 |
| Ctrl + D | 删除光标处字符/EOF |
| Ctrl + _ | 撤销 |
2. vi 风格
说明
- 模仿 vi 编辑器,分为普通模式和插入模式。
- 需要手动切换到 vi 模式。
常用快捷键
| 模式 | 快捷键 | 功能说明 |
|---|---|---|
| 普通 | i | 进入插入模式 |
| 普通 | h/j/k/l | 左/下/上/右移动光标 |
| 普通 | 0/$ | 行首/行尾 |
| 普通 | w/b | 下/上一个单词 |
| 普通 | x | 删除当前字符 |
| 普通 | dd | 删除整行 |
| 普通 | u | 撤销 |
| 插入 | Esc | 返回普通模式 |
3. 如何设置 Readline 风格
临时切换(当前会话有效)
-
切换到 vi 模式:
set -o vi -
切换到 emacs 模式:
set -o emacs
永久设置(添加到配置文件)
- 编辑
~/.inputrc文件,添加如下内容:
-
Emacs 风格(默认):
set editing-mode emacs -
vi 风格:
set editing-mode vi -
重新打开终端或执行
bind -f ~/.inputrc使其生效。
- 编辑
~/.zshrc文件,添加如下内容:
-
Emacs 风格(默认):
set -o emacs -
vi 风格:
set -o vi
参考
- GNU Readline 官方文档
man readline