GNU Readline, 让命令行编辑倍速提升

你有没有遇到过这种场景?写了很长一串命令,运行时发现第一个字母写错了。然后一个字符一个字符的删除,改完再重新输入一遍。

没有必要!!!比如上面的问题,你仅仅需要Control + a 回到开头位置修正你的问题即可。这种在行内编辑文本的功能通常是由 GNU Readline提供的。

GNU Readline是什么?

GNU 的一个库,提供行内编辑,历史管理等功能。bash, mysql, zsh, python, node等的shell中都有类似的功能。

常用的 Shotcuts

虽然 GNU Readline 作为一个类库存在,但我们并不关注如何利用其接口实现功能。此处只关注如何使用。感谢 Readline,使我们在不同的 shell 中有一致的体验。

Moving

Command Description
Ctrl-a 移至行首
Ctrl-e 移至行尾
Ctrl-f 向前移动一个字符
Ctrl-b 向后移动一个字符
Alt-f 向前移动一个单词。
Alt-b 向后移动一个单词。
Ctrl-l 清屏

Editing

Command Description
Ctrl-d 删除光标下的字符
Ctrl-t 交换字符位置
Alt-t 交换单词位置
Alt-u 将光标开始后的单词大写。
Alt-l 与上相反
Alt-c 大写当前单词(从光标处开始)。

Cutting and Pasting

Command Description
Ctrl-k 剪切到行尾
Ctrl-u 剪切到行首
Alt-d 剪切到词尾
Ctrl-w 剪切到词首
Alt-\ 删除光标附近空白
Ctrl-y 粘贴
Alt-y 交换粘贴

History

Command Description
Ctl-p 前一个命令
Ctl-n 下一个命令
Alt-< 第一个命令
Alt-> 最后一个命令
Ctrl-r 向后搜索
Ctrl-s 向前搜索
Alt-p 按字符串向前搜索
Alt-n 按字符串向后搜索

Misc

Command Description
Alt-# 注释当前行,并跳到下一行
Ctrl-] 向后搜索字符
Ctrl-Alt-] 向前搜索字符

有些终端 Alt 需要用 Esc 来替换。如果想使用 alt, 以 Xshell 为例,可以在“File -> Properties -> Terminal -> Keyboard” 中 的 Use Alt as Meta key 勾选即可。