主要观点:
- 人们在终端工作中对编辑已输入命令感到困惑,作者分享了相关经验和技巧。
- 不同程序在处理输入文本时存在很大差异,包括是否支持箭头键等。
- 介绍了几种输入模式,如基线模式、使用
readline
的模式、使用libedit
的模式和自定义模式等。
关键信息和重要细节:
- 基线模式:一些“基线”工具如安装在作者机器上的
dash
,按左箭头键会打印^[[D
等,可免费获得输入文本、退格、Ctrl+W
、Ctrl+U
等功能。 readline
模式:很多程序使用readline
库,提供诸如Ctrl+E
到行尾、Ctrl+A
到行首、Ctrl+左/右键
移动单词、上箭头回到上一条命令、Ctrl+R
搜索历史等功能,bash
shell 是著名的readline
用户,还可通过rlwrap
使无readline
支持的程序获得readline
支持。libedit
模式:在 Mac 上的/usr/bin/python3
默认使用libedit
,支持部分readline
功能,如箭头键,但不支持其他功能,可通过代码判断 Python 是否使用libedit
。- 自定义模式:大多数终端文本编辑器、一些 shells(如
fish
)、某些 REPLs(如ipython
)等有自己的自定义文本编辑系统,常受readline
启发,有更好的自动补全和历史管理等功能,很多 shells 支持 vi 键绑定。 - 了解所处的输入情况有助于更好地使用命令行,如箭头键不工作可使用
Ctrl+W
和Ctrl+U
,Ctrl+R
打印reverse-i-search
可能是readline
等。 - 文章未涉及的内容:与
ssh
/tmux
等相关问题、TERM
环境变量、不同终端的复制粘贴文本支持、unicode 等。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。