终端快捷键完全指南:提升命令行效率

13 min read
#terminal#bash#shortcuts#productivity#shell

前言

终端(Terminal)是开发者和系统管理员最常用的工作界面。熟练掌握终端快捷键可以让你在命令行中如虎添翼,大幅提升工作效率。

大多数现代终端使用 GNU Readline 库来处理命令行输入,这意味着这些快捷键在 Bash、Zsh、MySQL 客户端、Python REPL 等很多地方都是通用的!

快捷键模式

终端快捷键主要分为两种模式:

Emacs 模式(默认)

这是大多数系统的默认模式,使用类似 Emacs 编辑器的快捷键。

# 查看当前模式
bind -v | grep editing-mode
# 或
set -o | grep emacs

Vi 模式

使用类似 Vim 的操作方式。

# 切换到 Vi 模式
set -o vi

# 切换回 Emacs 模式
set -o emacs

本文主要介绍 Emacs 模式的快捷键(也是最常用的)。


光标移动快捷键

基础移动

快捷键功能
Ctrl + A移动到行首
Ctrl + E移动到行尾
Ctrl + B向左移动一个字符
Ctrl + F向右移动一个字符
Esc + B向左移动一个单词
Esc + F向右移动一个单词

高级移动

快捷键功能
Ctrl + XX在行首和当前位置之间切换
Esc + <移动到历史命令开头
Esc + >移动到历史命令结尾

文本编辑快捷键

删除操作

快捷键功能
Ctrl + D删除光标处的字符
Ctrl + H删除光标前的字符(等于 Backspace)
Ctrl + K删除从光标到行尾的内容
Ctrl + U删除从光标到行首的内容
Esc + D删除从光标到单词结尾的内容
Esc + Backspace删除从光标到单词开头的内容
Ctrl + W删除从光标到前一个空白处的内容
Ctrl + Y粘贴最后删除的内容(Kill Ring)

清除操作

快捷键功能
Ctrl + C取消当前命令
Ctrl + L清屏(等于 clear 命令)

历史命令快捷键

浏览历史

快捷键功能
Ctrl + P上一条历史命令(等于向上箭头)
Ctrl + N下一条历史命令(等于向下箭头)
Ctrl + R向后搜索历史命令
Ctrl + S向前搜索历史命令(可能需要先执行 stty -ixon
Esc + <历史命令的第一条
Esc + >历史命令的最后一条

历史命令扩展

# 执行上一条命令
!!

# 执行上一条命令的最后一个参数
!$

# 执行第 n 条历史命令
!n

# 执行上一条以 "git" 开头的命令
!git

# 搜索并执行包含 "pattern" 的命令
!?pattern?

# 打印上一条命令但不执行
!!:p

# 引用上一条命令的第一个参数
!!:1

# 引用上一条命令的所有参数
!!:*

文本操作快捷键

大小写转换

快捷键功能
Esc + U将从光标到单词结尾的字符转为大写
Esc + L将从光标到单词结尾的字符转为小写
Esc + C将光标处的字符转为大写,其余转为小写

字符转义

快捷键功能
Ctrl + V插入下一个字符的字面值(用于插入特殊字符)
Ctrl + Q恢复屏幕输出(如果被 Ctrl+S 暂停)

自动补全

Tab 补全是最常用的功能,但有更多技巧:

# Tab 补全
python <Tab>          # 列出所有以 python 开头的命令
cd ~/Doc<Tab>         # 自动补全为 ~/Documents/

# 查看所有可能的补全选项
Esc + ?               # 列出所有可能的补全
Esc + *               # 将所有可能的补全插入命令行
Esc + Tab             # 尝试补全所有可能的选项

# 补全类型
Esc + ~               # 补全用户名
Esc + $               # 补全变量名
Esc + @               # 补全主机名
Esc + !               # 补全命令名

进阶技巧

命令编辑

# 交换最后两个字符
Ctrl + T

# 交换最后两个单词
Esc + T

# 在光标处输入上一个命令的最后一个参数
Esc + . 或 Esc + _

# 重复输入上一个命令的最后一个参数
Alt + .

控制操作

# 暂停/恢复屏幕输出
Ctrl + S              # 暂停(XOFF)
Ctrl + Q              # 恢复(XON)

# 后台/前台任务
Ctrl + Z              # 将当前进程放到后台
fg                    # 将后台进程恢复到前台
bg                    # 让后台进程继续运行
jobs                  # 查看后台任务

# 退出会话
Ctrl + D              # 退出当前 Shell(等于 exit)

快捷键配置自定义

查看当前绑定

# 列出所有快捷键绑定
bind -p

# 查看特定按键的绑定
bind -q insert

自定义快捷键

~/.inputrc~/.bashrc 中添加自定义绑定:

# ~/.inputrc 文件格式

# 让 Ctrl+左/右箭头按单词移动
"\e[1;5C": forward-word
"\e[1;5D": backward-word

# 让 Ctrl+Backspace 删除整个单词
"\e[3;5~": kill-word

# 设置 Tab 补全不区分大小写
set completion-ignore-case on

# 显示补全选项时自动 beep
set bell-style visible

# 显示所有补全选项(不询问)
set show-all-if-ambiguous on

# 8位字符支持
set input-meta on
set output-meta on
set convert-meta off

在 ~/.bashrc 中配置

# 永久禁用 Ctrl+S/Q 流控制,让 Ctrl+S 可以用于搜索
stty -ixon

# 使用上下箭头搜索历史(智能匹配)
bind '"\e[A": history-search-backward'
bind '"\e[B": history-search-forward'

# 或者使用 .inputrc 方式
echo '$include /etc/inputrc' > ~/.inputrc
cat >> ~/.inputrc << 'EOF'
# 使用上下箭头进行历史搜索
"\e[A": history-search-backward
"\e[5~": history-search-backward
"\e[B": history-search-forward
"\e[6~": history-search-forward
EOF

特定程序的快捷键

Git Bash / Windows Terminal

大部分快捷键相同,但注意:

  • Ctrl + V 在某些终端是粘贴
  • Shift + Insert 通常是粘贴

Tmux 内

需要先按前缀键(默认 Ctrl + B)释放按键,然后使用快捷键。

# 进入复制模式
Ctrl + B [

# 然后可以使用 Emacs 或 Vim 快捷键移动

Vim 命令模式下

在 Vim 的命令模式(输入 : 后)中,可以使用类似的 Readline 快捷键。


macOS 特别说明

macOS 终端基本相同,但有些键位差异:

功能macOSLinux
单词左移Option + LeftEsc + BCtrl + Left
单词右移Option + RightEsc + FCtrl + Right
删除到行首Command + BackspaceCtrl + U
删除到行尾Ctrl + KCtrl + K

实用场景示例

场景 1:快速修正命令输入错误

# 输入命令时发现开头错了
$ gti commit -m "fix"
# 按 Ctrl + A 跳到行首,修改 gti 为 git

场景 2:重复执行类似命令

$ git push origin feature-branch
# 下一次推送不同分支
$ git push origin <Esc + .>    # 输入 "feature-branch"
# 修改为新的分支名
$ git push origin main-branch

场景 3:快速复制上一个命令的路径

$ cat /very/long/path/to/some/file.txt
# 现在想编辑这个文件
$ vim <Esc + .>    # 自动输入路径

场景 4:搜索历史命令

$ 按 Ctrl + R
(reverse-i-search)`': git
# 继续输入匹配内容
(reverse-i-search)`git': git push origin main
# 按 Enter 执行,或 Ctrl+G 取消

场景 5:批量操作

$ mv file1.txt backup/
$ mv file2.txt backup/
# 输入 mv file3.txt,然后按 Esc + . 自动补全 backup/
$ mv file3.txt <Esc + .>

快捷键速查表

最常用的快捷键

快捷键功能
Ctrl + A行首
Ctrl + E行尾
Ctrl + U删除到行首
Ctrl + K删除到行尾
Ctrl + L清屏
Ctrl + C取消命令
Ctrl + R搜索历史
Ctrl + D退出 Shell
Tab自动补全
Ctrl + Z后台任务

光标移动

快捷键功能
Ctrl + A/E行首/行尾
Ctrl + B/F左/右一个字符
Esc + B/F左/右一个单词

删除操作

快捷键功能
Ctrl + D/H删除光标处/前字符
Ctrl + K/U删除到行尾/行首
Ctrl + W删除到前一个空白
Esc + D删除到单词结尾

历史命令

快捷键功能
Ctrl + P/N上/下一条命令
Ctrl + R搜索历史
!!执行上一条命令
!$上一条命令的最后一个参数

学习建议

循序渐进

  1. 第一周:掌握 Ctrl + A/E(行首行尾)、Ctrl + U/K(删除)、Ctrl + R(搜索历史)
  2. 第二周:学习单词移动 Esc + B/F、单词删除 Esc + D
  3. 第三周:掌握历史扩展 !!!$ 等技巧
  4. 第四周:自定义配置,适应个人习惯

练习方法

# 创建练习文件
echo "Hello World, this is a test" > test.txt

# 练习删除和移动
# 1. 输入上面的命令
# 2. 使用 Ctrl + A 跳到行首
# 3. 使用 Ctrl + F 移动到 "World"
# 4. 使用 Esc + D 删除 "World"
# 5. 使用 Ctrl + Y 恢复
# 6. 使用 Ctrl + K 删除到行尾
# 7. 使用 Ctrl + Y 恢复

推荐资源

官方文档

# Bash 手册
man bash
# 搜索 "Readline" 部分

# Readline 详细文档
info readline

配置文件参考

  • /etc/inputrc - 系统级 Readline 配置
  • ~/.inputrc - 用户级 Readline 配置
  • ~/.bashrc - Bash 配置文件

总结

终端快捷键是每个开发者都应该掌握的基本技能。这些快捷键:

  • 通用性强:在 Bash、Zsh、Python REPL、MySQL、PostgreSQL 等多种环境中都有效
  • 效率提升明显:熟练使用后可以节省大量时间
  • 学习曲线平缓:先掌握几个常用的,再逐步学习高级技巧

记住,肌肉记忆需要练习。刚开始可能需要思考一下按哪个键,但使用几次后就会变成自然的反应。

记忆口诀

  • After start - Ctrl+A 到行首
  • End - Ctrl+E 到行尾
  • Kill - Ctrl+K 删除到行尾
  • Undo-like - Ctrl+U 删除到行首
  • Reverse search - Ctrl+R 搜索历史
  • Look clear - Ctrl+L 清屏

祝你在终端中操作如飞!