类UNIX终端命令行中的快捷键
我们时常在Linux/macOS中用到命令行终端,包括但不限于 Linux 无视窗界面、GUI界面下的终端程序,macOS下的终端Termimal、iTerm2,等等。在终端里经常会用到一些快捷键,在这里记录一下。
Ctrl+C 和 Ctrl+D
总体来说应该用的最多的是 Ctrl+C,结束进程,有时候是Ctrl+D,比如在Python的交互式程序中 Ctrl+C 并不能退出程序,Node.js 则需要按两次可以退出。而如果是vi,Ctrl+C和Ctrl+D就都没有作用了。
$ python
Python 3.11.13 (main, Jun 3 2025, 18:38:25) [Clang 17.0.0 (clang-1700.3.19.1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> [按下Ctrl+C]
KeyboardInterrupt
>>> [按下Ctrl+C]
KeyboardInterrupt
>>> [按下Ctrl+C]
KeyboardInterrupt
>>> ^D
$
$ node
Welcome to Node.js v24.13.0.
Type ".help" for more information.
> [按下Ctrl+C]
(To exit, press Ctrl+C again or Ctrl+D or type .exit)
> [再次按下Ctrl+C 或 Ctrl+D]
$
以上只是表象,而这两个命令是有区别的:
- Ctrl + C(中断 / Kill 当前进程),发送的是 SIGINT(中断信号),强制打断正在运行的程序
- Ctrl + D(EOF / 输入结束),发送的是 EOF(End Of File) 告诉程序:输入结束了
补全
Tab→ 自动补全- 连按两次 → 列出所有候选
其实这应该是我用的最多的,但是有些同学不用,就爱一个一个字母敲,你管得着吗😂
历史命令
Ctrl + P→ 上一条命令(↑)Ctrl + N→ 下一条命令(↓)
这个快捷键我也是第一次知道,之前都用上下键,我发现有些同学也不用上下键。就爱重新敲一遍,你管得着吗😂
还有个是 搜索命令 Ctrl + R → 反向搜索历史命令,按下快捷键后,输入关键词搜索历史命令,再按 Ctrl + R 继续往前找,找到后按回车执。
不过我用的不多,我一般是去history文件里找,一目十行,找起来更方便。
依然记得 N年前,组长带我去面试应聘者,那哥们儿技术不咋地、态度很傲慢。组长就问了他这个命令Ctrl+R 是干啥用的,自然是回答不上来;再来几个这种比较冷门的知识,杀杀他的傲气,打发走了。
终端中控制输入光标
我们经常从历史记录中、或者复制一些很长带参数的命令,粘贴后还要修改一些参数,鼠标点击是不起作用的,只能按“左⬅️” 或者 “右➡️” 进行移动光标,偶然看到同事瞬间回到行首才知道有这种快捷键操作。
移动光标
Ctrl + A→ 移到行首Ctrl + E→ 移到行尾Ctrl + B→ 向左一个字符Ctrl + F→ 向右一个字符Alt + B→ 向左移动一个单词Alt + F→ 向右移动一个单词
删除字符
Ctrl + W→ 删除光标前一个单词Ctrl + D→ 删除光标后一个字母Alt + D→ 删除光标后一个单词Ctrl + K→ 删除到行尾Ctrl + U→ 删除到行首
在我的mac上,Ctrl+U变成了删除整行,不知道怎么回事,这是谁干的!
$ bindkey '^U'
"^U" kill-whole-line
在 macOS 终端(Terminal / iTerm2):
- Alt = Option(默认是 Meta 键)
- 如果不好用,需要检查:
- iTerm2 → Preferences → Profiles → Keys → Left Option Key = Esc+
其他
Ctrl + L→ 清屏,Mac上Command + K也可以Ctrl + T→ 交换光标前两个字符Alt + T→ 交换两个单词Ctrl + _→ 撤销(undo)Ctrl + Y→ 粘贴刚刚删除的内容(yank)
个人使用习惯不同,欢迎补充。