跳到主要内容

类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)

个人使用习惯不同,欢迎补充。