看着眼前这台只有键盘能用的老旧服务器,鼠标驱动早就挂了,网络延迟高得离谱,光标一到终端里就到处乱跳。我需要紧急查日志、改配置、重启服务,每一秒都很宝贵。那一刻我才意识到,终端快捷键不是“花哨技巧”,而是真正能在绝境里保命的生存技能。
这篇文章想和你聊的,就是终端生态里最值得记住的实操快捷键。不光是Linux bash,还包括Windows Terminal、Tabby、VS Code、IDEA这些日常开发环境里的终端窗口,以及tmux这种“终端复用神器”。不管你是一线开发、运维、测试,还是只是偶尔打开命令行干活的普通职员,只要你有过“鼠标突然不好使”或者“手忙脚乱找不到键”的经历,接下来这些内容都值得收藏。
1. 求生第一课:为什么说终端快捷键才是真正的“保命技”
先说一个反直觉的事实:终端本身就是为键盘设计的,鼠标只是后来附加的“奢侈配置”。在纯字符界面的世界里,你的每一秒操作都发生在键盘上,方向键离主键区远、组合键多、没有“右键菜单”这种东西。如果习惯了鼠标点选复制,一旦进入无图形界面的服务器、SSH远程会话、或者终端卡死的情况,你会瞬间失去所有操作能力。快捷键就是这时的原始生存工具。
我刚入行时,Shell里最熟练的动作是Ctrl+C和方向键上下翻历史,剩下全靠鼠标。直到一次线上故障,图形化监控面板打不开,我只能靠键盘在纯文本终端里排查问题,这才痛下决心把终端快捷键当成“肌肉记忆”来练。现在回头看,真正在关键时候救过命的,往往不是某个复杂的框架,而是这些最不起眼的组合键。
1.1 终端快捷键的底层逻辑:Readline、Shell 与终端模拟器三层结构
要理解为什么快捷键在不同地方表现不一样,得先清楚终端的结构。绝大多数Linux/Unix终端里,命令行编辑功能来自 GNU Readline 库(或 zsh 自带的 ZLE),它定义了 Ctrl+A、Ctrl+E、Ctrl+W 这类按键在“输入一行命令”时的行为。终端模拟器则提供窗口管理、标签页、分屏、复制粘贴等能力,比如 Windows Terminal、Tabby、GNOME Terminal。Shell(bash、zsh、PowerShell)居中,负责解释执行命令,同时提供历史记录、补全等功能。
这个概念很重要,因为“保命”的关键就在这里:有些快捷键是 Shell/Readline 层面的,在任何远程连接里都有效;还有一些是终端模拟器层面的,只在本地窗口里有效。比如 Ctrl+R 搜索历史,你是跑在 bash 里,SSH 连到远程服务器也一样好用;但 Ctrl+Shift+T 开新标签页,那是 Windows Terminal 的活儿,远程会话里没有这个说法。下面我会明确区分这两个层次,不然你可能会在某个场景里“按了没反应”。
1.2 三十招的整体分类:按“使用频率”和“救急程度”排优先级
标题说了30招,实际的数量比这更多,但我不想用它来凑数。我自己的习惯是按使用频率和救急程度分成四组:
- 第一组:命令编辑与历史搜索,这部分是最高频、最基础,也是保命指数最高的。覆盖光标移动、删除、粘贴、搜索历史。大约15招。
- 第二组:终端模拟器的标签页、分屏、复制粘贴,属于日常多任务场景必备。大约10招。
- 第三组:tmux 会话复用快捷键,适合长时间运行的远程任务和断线恢复。大约5招。
- 第四组:个性化配置和故障自救,比如自定义快捷键、处理终端打不开、权限切换。这部分更像是“绝境自救包”。
接下来我会按这个顺序展开。每个快捷键我都会尽量说清楚“按下去会发生什么”、“为什么这样设计”、“在哪些环境可能失效”,这样你不仅能背下来,还能在遇到异常时自行推断对策。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 第一梯队:光标移动、命令编辑与历史回放的保命快捷键
很多人第一次用终端时的疑问是:为什么按左右方向键光标只动一格,按半天才能到头?为什么想删掉前面几个字不能用退格键一直删?原因在于终端命令行编辑器的设计理念是“尽量不离开主键盘区”,它希望你把手指稳稳放在字母区,用功能键跳转、剪切、粘贴,而不是左右方向键一格一格挪。这一节我把它拆成三块,每一块都是能直接提高效率的操作。
2.1 光标移动与编辑:从“逐格挣扎”到“整行跳转”
先记住一个基础原则:在 Emacs 键位模式下(bash 默认就是这个模式),Ctrl+字母的组合键承担“类似方向键”的功能。
- Ctrl+A:跳到行首。不管当前光标在哪里,按一下回到这一行开头,比 Home 键好按得多。
- Ctrl+E:跳到行尾。与 Ctrl+A 对应,相当于 End 键。
- Ctrl+F:向前移动一个字符,也就是右方向键。放在主键区,省得伸手。
- Ctrl+B:向后退一个字符,相当于左方向键。
- Alt+F:向前移动一个词(按单词跳),而不是按字符。英文命令里非常实用,例如从 /usr/local/bin 向尾部跳。
- Alt+B:向后移动一个词。
- Ctrl+U:从光标处剪切到行首。如果光标在行尾,Effect上等于整行清空,但并非真正“清除”,而是把内容放进剪贴板,后续可粘贴。
- Ctrl+K:从光标处剪切到行尾。假如你光标在行中,它会删掉后半段。
- Ctrl+W:剪切一个词到行首(向后删一个词)。注意,这个词是按空白分隔的,路径里的斜杠可能不算分隔符。
- Ctrl+Y:粘贴刚才用 Ctrl+U、Ctrl+K、Ctrl+W 剪切的内容。这个和图形界面的 Ctrl+V 完全不一样,它粘贴的是终端专用剪贴板。
这块操作需要刻意练习。我见过不少老手,用 Ctrl+E 和 Ctrl+U 配合,先把命令删掉,再重新打,效率比一个字符一个字符退格快得多。你可以在一个长命令上反复试验,比如输入了一长串 docker run 参数,不想重写,用 Ctrl+W 删掉几个参数,或者 Ctrl+U 全部剪切,再 Ctrl+Y 粘贴回来调整顺序,熟练后会非常爽。
2.2 历史命令搜索:Ctrl+R 是终端的“搜索框”
历史命令功能几乎人人知道上下箭头翻,但翻到几十条之前的历史时,这方法效率极低。真正的保命工具是 Ctrl+R。
- Ctrl+R:进入反向搜索历史模式,输几个字符,终端会从最近的命令开始往回匹配。按一次 Ctrl+R 可以跳到更早的匹配项。
- Ctrl+S:正向搜索,从旧往新搜。但这个按键在很多终端里被“流控”占用了,按下去终端会冻结。想让它生效,通常得在 ~/.bashrc 或终端模拟器里取消 XON/XOFF 映射,或者手动执行 stty -ixon。
- Ctrl+G:退出搜索模式,恢复当前输入。
- Ctrl+P 和 Ctrl+N:分别相当于上一条、下一条历史命令,和上下方向键等价,但不用远离主键区。
- !!:在 bash/zsh 里运行上一条命令。这个不算快捷键,但却是“救命”时的最爱——比如一条 sudo 命令因为忘记权限而失败,你可以直接打 sudo !! 重新执行。
- !$:展开上一条命令的最后一个参数。比如执行过 cat /etc/httpd/conf/httpd.conf,然后用 vim !$ 就能直接编辑这个文件。
- !*:展开上一条命令的所有参数,适合“重跑一条新命令,但沿用旧参数”的场景。
实际操作中,Ctrl+R 后输入关键字,几乎能瞬间找回任意历史上的命令。我自己的习惯是再配合 grep 一条 history 命令:history | grep mysql,比肉眼翻屏幕高效得多。”保命“场景里最典型的就是:你忘记上次是怎么启动某个服务的,Ctrl+R 之后敲个“start”,几秒钟就能找回来。
2.3 容易被误解的“换行”、“上一行”和“清屏”问题
最近很多人搜“linux终端怎么换到上一行”、“cmd和linux终端怎么换行”,说明大家对命令行里的“换行”概念有困惑。
在终端里,输入命令并按回车,并不代表“换到下一行”,而是“执行当前这行命令”。如果你想在输入框中继续输入下一段内容,而不是立即执行,通常可以用反斜杠加回车:在命令末尾敲一个 \,再回车,Shell提示符会变成 >,表示命令尚未结束,可以继续输入。这常用于多行管道或者很长的 awk 命令。另一种场景是在 vim 里编辑文件时,编辑模式按回车就是换行,但如果你在正常模式按了方向键却被终端解读成 A/B/C/D,那多半是因为没有切回普通模式,不是快捷键问题。
还有一个高频率操作是清屏。很多人习惯疯狂回车,其实 Ctrl+L 就能把屏幕清理干净,不清空终端历史,相当于 clear 命令。这个快捷键在 bash、zsh 和很多终端模拟器里都通用。再强调一次:Ctrl+L 不是刷新,而是清屏且保留当前输入行,非常安全。
3. 窗口分屏与会话复用:终端模拟器与 tmux 的高阶保命操作
单窗口操作的快捷键再熟练,当你同时要盯日志、改配置、跑服务时,还是会手忙脚乱。这里就轮到终端模拟器自带的标签页/分屏功能,以及 tmux 这种“会话复用”工具登场。我在实际工作中,一个屏幕上经常是左边跑日志、右边写命令、上方还有一个 tmux 窗口挂后台任务。没有这一套,光靠 Alt+Tab 切窗口,效率至少掉一半。
3.1 终端模拟器快捷键对照:Windows Terminal、Tabby 与 VS Code/IDEA 终端
不同终端模拟器的快捷键大同小异,但细节差异偶尔会坑人。我先列几个最常见的。
Windows Terminal:
- Ctrl+Shift+T:新建标签页。
- Ctrl+Shift+W:关闭当前标签页。
- Ctrl+Shift+N:新建窗口。
- Ctrl+Tab / Ctrl+Shift+Tab:切换到下一个/上一个标签页。
- Ctrl+Shift+D:复制当前标签页(部分版本),或按配置进行分屏。
- Alt+Shift+D 或 Alt+方向键:分屏或移动焦点,不同版本有区别,建议在设置里看一眼。
Tabby 终端(以前叫 Terminus):
- Ctrl+Tab:切换标签页。
- Ctrl+Shift+T:新建标签页。
- Ctrl+Shift+W:关闭标签页。
- Ctrl+Shift+N:新建窗口。
- 它的可配置性很高,我一般会把分屏快捷键改成和 Windows Terminal 一致,方便肌肉记忆。
VS Code 集成终端:
- Ctrl+`:打开/关闭终端面板。
- Ctrl+Shift+5:拆分终端(在已有终端时)。
- Ctrl+Shift+`:新建终端实例。
- Ctrl+Shift+P:打开命令面板,在终端相关命令里能找到很多隐藏操作。
IDEA/IntelliJ 系列终端:
- Alt+F12:快速打开终端。
- Alt+方向键:在终端和编辑器之间切换焦点。
- Ctrl+Shift+Tab / Ctrl+Tab:切换终端标签页。
- 还可以在 Settings -> Keymap 里搜索 Terminal 修改快捷键。
这类模拟器快捷键不是 Shell 的一部分,所以即使在本地用没问题,SSH 到远程后也可能没有响应,这是正常现象。真正“不依赖模拟器”的,是 tmux 或者 screen 这类终端复用器。
3.2 tmux 快捷键:断线不丢会话的“复活甲”
远程服务器上跑一个任务,结果网络断了,Shell 一断,进程就没了。这个场景一直是运维和新手的心病。tmux 解决的就是这个问题:它把会话挂在后台,即使客户端断开,会话依然存活,你下次连上去还能恢复现场。
tmux 默认前缀键是 Ctrl+B,所有操作都是先按前缀,再按功能键。
- Ctrl+B %:垂直分屏,左右各一个面板。
- Ctrl+B ":水平分屏,上下各一个面板。
- Ctrl+B 方向键:在面板之间移动光标。
- Ctrl+B Ctrl+方向键:调整面板大小。
- Ctrl+B C:新建一个 tmux 窗口(window)。
- Ctrl+B N / P:切换到下一个/上一个窗口。
- Ctrl+B D:分离当前会话,回到普通终端。
- tmux attach 或 tmux attach -t 会话名:重新进入吸附状态。
- Ctrl+B Z:把当前面板临时放大到全屏,再按一次恢复。这个超级适合专注看日志。
- Ctrl+B [:进入复制模式,可以滚动屏幕查看历史输出。在这个模式下用方向键上下翻页、Ctrl+Space 开始选择、Alt+W 复制。退出复制模式按 q。
我把 tmux 的键位分成两组记忆:一组管“空间布局”(分屏、切换面板),一组管“会话生命周期”(新建、分离、恢复)。你可以只记住这几个,已经能应对绝大多数场景。更多操作看 man tmux,但没必要全部背下来。
3.3 复制粘贴的三种流派:别再把 Ctrl+C 当“复制”用在终端里
终端里最容易翻车的操作是复制粘贴。你在终端里按 Ctrl+C,通常不是复制,而是发送中断信号,直接终止当前正在运行的命令。很多人第一次 SSH 到服务器,想复制一段命令,按了 Ctrl+C,结果正在跑的进程被干掉了,这就是没分清流派。
- Linux/GNOME Terminal 等:复制是 Ctrl+Shift+C,粘贴是 Ctrl+Shift+V。
- Windows Terminal / cmd / PowerShell:复制也是 Ctrl+Shift+C,粘贴 Ctrl+Shift+V,但老式 Windows 控制台还有 Ctrl+Insert 复制、Shift+Insert 粘贴。
- macOS Terminal / iTerm2:复制和粘贴用 Cmd+C / Cmd+V,中断进程依然是 Ctrl+C。
- Linux 图形终端还有一个“选中即复制、中键粘贴”的机制:用鼠标选中一段文字,它就已经被复制了,在目标位置按鼠标中键(滚轮)即可粘贴。这在终端里非常高效。
如果你觉得 Ctrl+Shift+C/V 太别扭,还可以在终端模拟器里重新映射。比如 Windows Terminal 的 settings.json 里可以给 ctrl+shift+c 绑定到 copy,但要注意别覆盖掉原来的 Ctrl+C 中断功能。我个人的建议是不要乱改 Ctrl+C 的含义,否则在远程和本地来回切换时会精神分裂。
4. 故障自救手册:终端打不开、进程异常、权限不足怎么破
快捷键是为了高效,但在某些“终端都没法正常打开”的时刻,快捷键也救不了你。这类问题我在日常咨询里遇到太多了:Windows Terminal 启动时报 conpty 异常、VS Code 终端提示 winpty 冲突、Ubuntu 桌面环境终端打不开、权限不够没法安装软件。这些表面上是“打不开”,根子往往是环境变量、默认终端设置或权限模型出了问题。这一节我把高频故障和自救流程走一遍,重点放在你可以复制粘贴的排查路径上。
4.1 Windows Terminal 的 conpty 与 winpty 异常:根源和解决
有朋友遇到过这样的报错:
code复制终端进程启动失败: 启动期间发生本机异常(无法启动 conpty)。已移除 winpty...
这个“conpty”是 Windows 10/11 引入的伪终端支持,现代 Windows Terminal 和 VS Code 都依赖它。报错的常见原因有三类:系统组件损坏、配置文件里的启动命令错误、以及第三方 PTY 兼容层(比如 Git Bash 里的 winpty)与 conpty 冲突。
我的排查顺序是这样的:
- 先测 Windows Terminal 能否独立启动。如果独立启动也报错,去“设置 -> 启动 -> 默认终端应用程序”,确认不是被某个第三方终端劫持。
- 重置配置文件:Windows Terminal 的 settings.json 如果被改坏,备份后把它删掉或者改用“默认值”,让终端重新生成配置。
- 检查
shell选项:在 Windows Terminal 的配置文件里找“命令行”字段,如果它被改成了指向不存在的 exe,就会启动失败。VS Code 里则要看 settings.json 的terminal.integrated.profiles.windows和terminal.integrated.defaultProfile.windows,路径写错同样会出现启动异常。 - 如果你在 Git Bash 或老式 MinTTY 环境里装过 winpty,优先更新 Git for Windows,然后让系统用原生 mintty 模式。很多“冲突”其实是新版终端模拟器已经不用 winpty 了,旧配置还在硬塞导致初始化失败。
这类问题没有万能药,但记住一条:终端进程的“启动命令”和“默认终端应用”是最容易出问题的地方,排查时优先检查这两个。其他的系统级修复,一般不需要走到重装那一步。
4.2 Ubuntu 桌面端终端打不开:进 TTY 和恢复环境变量
Ubuntu 用户会在图形界面里双击终端图标没反应,或者一打开就闪退。导致这个的原因非常多,常见的有:显卡驱动异常、.bashrc / .profile 被写入了坏的环境变量、Python 版本切换把 PATH 搞坏、还有 dpkg 包管理器中断。
不要慌,还有一个救命通道:Ctrl+Alt+F3(部分系统是 F1-F6)可以从图形界面切换到纯命令行 TTY,用用户名密码登录后,你依然能拿到一个可用的 Shell。这是“终端打不开”时的第一逃生梯。
登录 TTY 后,先看当前 PATH 是不是被污染了:
bash复制echo $PATH
如果发现路径里混入了不存在的目录,或者 ~/.bashrc 最近被改过,可以临时绕过它:
bash复制bash --norc
这会启动一个不加载 ~/.bashrc 的 Shell,再用 nano 或 vi 打开 ~/.bashrc 检查是否有 export PATH=... 之类的坏行,注释掉或修正后,重新登录验证。
还有一个非常常见的情况:你之前用 sudo apt install python 或手动安装 Python 时改过 /usr/bin/python 的软链,导致桌面应用依赖的 Python 崩溃。这时候可以在 TTY 里执行 sudo apt --fix-broken install 或者 sudo dpkg --configure -a,让包管理器自检修复。
4.3 权限不足怎么办:sudo、su 与以管理员身份打开终端的正确姿势
很多新人的问题是:想执行 apt install 但提示权限不够。正确姿势是加 sudo,而不是登录 root 账户。但如果你已经处在普通终端里,可以通过快捷键直接打开一个管理员权限的终端,最稳的是临时切换身份:
bash复制sudo -i # 进入 root 的登录 shell,环境变量直接切换到 root 下
sudo su # 切到 root,但保留部分当前环境
su - # 需要 root 密码,切换到 root,刷新环境
Windows 侧对应的是“以管理员身份运行”。在开始菜单搜索 PowerShell 或 终端,右键选择“以管理员身份运行”,或者按 Ctrl+Shift+Enter 直接以管理员身份启动。这里有个容易踩的坑:如果 VS Code 或某终端已经以普通权限启动,即使里面运行 PowerShell 再执行提升权限的命令,UAC 一样会弹窗,但工作目录会发生改变,有些脚本会找不到相对路径。所以需要管理员权限的操作,尽量从干净的“管理员终端”开始。
4.4 输入没反应或按键被占用:检查流控与终端冻结
还有一种“假死”状态:命令行输入任何字符都没有反应,看起来像卡死了,实际是终端收到了 Ctrl+S 暂停输出。常见的触发场景是你本来想搜历史,结果按了 Ctrl+S,然后终端输出全部冻结。此时按 Ctrl+Q 即可恢复。如果你发现自己总是误触 Ctrl+S,可以主动在 ~/.bashrc 里关掉 XON/XOFF:
bash复制stty -ixon
这个命令是“关闭启停流控”,让 Ctrl+S 不再被系统截留,你就能把它用于历史正向搜索了。再有就是终端模拟器内部的快捷键冲突,比如 Windows 的 Ctrl+Space 可能被用作输入法切换,导致终端补全失灵。遇到“按快捷键没反应”,先排除输入法、终端模拟器、远程会话三层,别一上来就怀疑键盘坏了。
5. 把快捷键变成你自己的:别名、bindkey 与个性化配置
预设快捷键再完美,也不可能适配每一个人的习惯。比如我习惯用 Ctrl+W 删除单词,但默认它在某些终端里可能会被“关闭标签页”吃掉;还有人偏好 vim 操作风格,想在终端里用 Esc 切换普通模式和插入模式。终端的美妙之处就在于几乎一切都可以自定义。下面分享几条我实际用下来的配置方案。
5.1 bash 的 Readline 键位调整:修改 inputrc
Readline 是 bash 的命令行编辑核心,它的全局配置通常在 /etc/inputrc,用户自定义在 ~/.inputrc。你可以用这个文件把某个按键重新绑定。比如我觉得 Ctrl+H 默认是退格,在有些连接工具里被吞了,就可以在 ~/.inputrc 里写上:
bash复制set keymap emacs
Control-h: backward-delete-char
再比如,你可以把 PageUp 绑定为历史搜索:
bash复制"\e[5~": history-search-backward
"\e[6~": history-search-forward
改完配置文件后,新开一个终端窗口才会生效。平时想快速查看当前按键绑定,用 bind -P;临时绑定某个按键,比如把 Ctrl+T 绑定为在行首和光标处切换,可以执行:
bash复制bind '"\C-t": exchange-point-and-mark'
这里的 \C- 表示 Ctrl,\e 表示 Esc。理解了这个语法,你就能按照 Readline 的文档定制任意组合键。
5.2 zsh 的 bindkey:比 Readline 更灵活的键位方案
如果你使用 zsh,那它的键位管理是 ZLE(Zsh Line Editor),设置命令是 bindkey。先查看当前所有绑定:
bash复制bindkey
或者只查看某个键:
bash复制bindkey "^r"
zsh 默认一般在 emacs 模式,你也可以切到 vim 模式:
bash复制bindkey -v
这样你就能用 Esc 进入普通模式,用 hjkl 移动光标,有点像 vim 的感觉。但我不建议新手直接切 vim 模式,学习曲线比较陡。更实用的做法是自定义几个高频操作:
bash复制bindkey '^X^E' edit-command-line # 按 Ctrl+X Ctrl+E 打开编辑器编辑当前命令
bindkey '^P' history-beginning-search-backward # 输入前缀后按 Ctrl+P 搜索以该前缀开头的历史
edit-command-line 非常爽,长命令写到一半,按一下 Ctrl+X Ctrl+E,就能在系统编辑器里慢慢改,保存退出后自动执行。这种操作在复杂 shell 脚本拼接时是“保命”级别的。
5.3 更务实的一招:用 alias 和函数把“复杂操作”变成“一键命令”
快捷方式不只是键盘组合键,还可以是命令别名。比如我常年备着这几个:
bash复制alias ll='ls -lhF'
alias la='ls -A'
alias gh='history | grep'
alias c='clear'
alias t='tail -f'
这种入门级就不用多说了。进阶一点,可以把“查端口占用并杀进程”这种高危操作封装成函数:
bash复制function killport() {
lsof -ti :$1 | xargs kill -9
}
这样以后清理端口只要打 killport 8080,比一行一行敲容易得多。类似的函数你完全可以自己攒,遇到重复三次以上的操作,就把它写进 ~/.bashrc 或 ~/.zshrc,让它变成你自己的“第31招、第32招”。在紧急排障时,这种熟记于心的函数往往比快捷键还救命。
5.4 顺手配置终端模拟器:Alt 键与 Ctrl 键的错位问题
自定义终端模拟器时,最容易被忽略的是快捷键修饰键冲突,尤其在 Windows 和 macOS 上。具体表现是:Alt 键在某些终端里被当成 Meta 键,用于 Alt+B / Alt+F 跳词,但在某些终端软件里它被菜单栏吃掉了,你必须额外配置。
比如 Windows Terminal 中,默认配置对 Alt 键的处理是发送字符,所以你用 Alt+B/F 是可以的,但如果你把 Alt 键设为“打开菜单”,那跳词功能就失效了。Tabby 里也有类似的 keyboard 设置,需要在设置里找到 shortcuts,把 Alt+字母 保留为终端键序列。macOS 的 Terminal.app 则要求在“设置 -> 描述文件 -> 键盘”里勾选“使用 Option 键作为 Meta 键”,否则 Option+B/F 会被输出成特殊字符。
这个坑太常见了:一堆人照着网上的教程按 Alt+F 跳词,结果没反应,就开始怀疑 Shell 配置,其实只是终端模拟器把 Alt 吞了。遇到按键失效,先检查终端模拟器的“快捷键”设置,再检查 Shell 键位,不要一头扎进配置文件里。
6. 三十招速查表与我的使用心法
讲了这么多,最后整理成一张可以直接对照的速查表。这里一共列30项,正好对应标题里的“30招”。我把比较常见的终端环境都照顾到了,读者可以按自己的日常情况挑重点标记。
| 序号 | 快捷键 | 作用 | 适用层 |
|---|---|---|---|
| 1 | Ctrl+A | 跳到行首 | Shell/Readline |
| 2 | Ctrl+E | 跳到行尾 | Shell/Readline |
| 3 | Ctrl+F / Ctrl+B | 向前/向后移动一个字符 | Shell/Readline |
| 4 | Alt+F / Alt+B | 按词向前/向后移动 | Shell/Readline |
| 5 | Ctrl+U | 剪切到行首 | Shell/Readline |
| 6 | Ctrl+K | 剪切到行尾 | Shell/Readline |
| 7 | Ctrl+W | 删除上一个词 | Shell/Readline |
| 8 | Ctrl+Y | 粘贴剪切的内容 | Shell/Readline |
| 9 | Ctrl+L | 清屏 | 终端/Shell |
| 10 | Ctrl+C | 中断当前命令 | 终端 |
| 11 | Ctrl+D | 退出当前Shell(EOF) | Shell |
| 12 | Ctrl+R | 反向搜索历史 | Shell |
| 13 | Ctrl+P / Ctrl+N | 上/下一条历史命令 | Shell |
| 14 | !! | 执行上一条命令 | Shell |
| 15 | !$ | 使用上一条命令的最后一个参数 | Shell |
| 16 | Tab | 自动补全命令/路径 | Shell |
| 17 | Ctrl+Shift+T | 新建标签页 | Windows Terminal/Tabby |
| 18 | Ctrl+Shift+W | 关闭标签页 | Windows Terminal/Tabby |
| 19 | Ctrl+Shift+D | 分屏 | Windows Terminal/Tabby |
| 20 | Ctrl+Tab | 切换标签页 | 终端模拟器 |
| 21 | Ctrl+B % | tmux 垂直分屏 | tmux |
| 22 | Ctrl+B " | tmux 水平分屏 | tmux |
| 23 | Ctrl+B C | tmux 新建窗口 | tmux |
| 24 | Ctrl+B D | tmux 分离会话 | tmux |
| 25 | Ctrl+B Z | tmux 放大当前面板 | tmux |
| 26 | Ctrl+Shift+C / Ctrl+Shift+V | Linux终端复制/粘贴 | 终端模拟器 |
| 27 | Shift+Insert | 老式终端粘贴 | Windows/Linux |
| 28 | Cmd+C / Cmd+V | macOS 终端复制/粘贴 | macOS 终端 |
| 29 | Ctrl+Alt+F3 | 切到TTY | Linux 桌面 |
| 30 | sudo -i / sudo su | 提升到管理员Shell | Shell |
这张表不是让你一次全背下来的。我的经验是:先选10个最高频的,每天刻意用,比如 Ctrl+A、Ctrl+E、Ctrl+U、Ctrl+W、Ctrl+Y、Ctrl+R、Ctrl+L、Ctrl+C、Ctrl+Shift+C/V,以及 tmux 的 Ctrl+B %、Ctrl+B D。用熟一批再添加下一批,很快就能形成肌肉记忆。
最后分享一个我自己的小习惯:每次进入一台陌生服务器,我会先执行 bind -P | grep "\\C-" 看一眼当前的键位绑定,再执行 echo $SHELL 确认是 bash 还是 zsh。你总会遇到有人改了输入模式或键位配置的机器,提前摸清底细,远比到时候抓瞎按快捷键强。而且我会随身带一个只有三行配置的 dotfiles 仓库,里面放着 ~/.inputrc 和 ~/.bashrc 里的高价值 alias,到哪都能在几分钟内把终端调成自己习惯的样子。这算是我觉得真正称得上“保命”的一招:不是记住所有快捷键,而是知道怎么用自己的方式,在未知环境里快速恢复控制权。
