终端快捷键完全指南:提升命令行效率
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 终端基本相同,但有些键位差异:
| 功能 | macOS | Linux |
|---|---|---|
| 单词左移 | Option + Left | Esc + B 或 Ctrl + Left |
| 单词右移 | Option + Right | Esc + F 或 Ctrl + Right |
| 删除到行首 | Command + Backspace | Ctrl + U |
| 删除到行尾 | Ctrl + K | Ctrl + 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 | 搜索历史 |
!! | 执行上一条命令 |
!$ | 上一条命令的最后一个参数 |
学习建议
循序渐进
- 第一周:掌握
Ctrl + A/E(行首行尾)、Ctrl + U/K(删除)、Ctrl + R(搜索历史) - 第二周:学习单词移动
Esc + B/F、单词删除Esc + D - 第三周:掌握历史扩展
!!、!$等技巧 - 第四周:自定义配置,适应个人习惯
练习方法
# 创建练习文件
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 清屏
祝你在终端中操作如飞!