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
    

永久设置(添加到配置文件)

  1. 编辑 ~/.inputrc 文件,添加如下内容:
  • Emacs 风格(默认):

    set editing-mode emacs
    
  • vi 风格:

    set editing-mode vi
    
  • 重新打开终端或执行 bind -f ~/.inputrc 使其生效。

  1. 编辑~/.zshrc文件,添加如下内容:
  • Emacs 风格(默认):

    set -o emacs
    
  • vi 风格:

    set -o vi
    

参考