一、终端/Shell 快捷键
1.1 光标移动
bash
# 基本移动
Ctrl + A # 移动到行首
Ctrl + E # 移动到行尾
Ctrl + B # 向左移动一个字符(同左箭头)
Ctrl + F # 向右移动一个字符(同右箭头)
Alt + B # 向左移动一个单词
Alt + F # 向右移动一个单词
# 跳转
Ctrl + XX # 在当前光标和行首之间跳转
Esc + T # 交换光标前两个单词的位置
1.2 编辑操作
bash
# 删除
Ctrl + H # 删除光标前一个字符(同Backspace)
Ctrl + D # 删除光标后一个字符(如果没有字符则退出终端)
Ctrl + W # 删除光标前一个单词
Alt + D # 删除光标后一个单词
Ctrl + U # 删除从光标到行首的内容
Ctrl + K # 删除从光标到行尾的内容
Ctrl + Y # 粘贴刚才删除的内容
# 复制粘贴(部分终端支持)
Ctrl + Shift + C # 复制选中文本
Ctrl + Shift + V # 粘贴文本
# 其他编辑
Ctrl + T # 交换光标前后两个字符
Ctrl + _ # 撤销上一次编辑操作
1.3 历史命令
bash
Ctrl + P # 上一个命令(同上箭头)
Ctrl + N # 下一个命令(同下箭头)
Ctrl + R # 反向搜索历史命令
# 按Ctrl+R后输入关键词搜索
# 再次按Ctrl+R继续向前搜索
# Ctrl+G退出搜索
Ctrl + S # 正向搜索历史命令(需先禁用stty -ixon)
Alt + . # 插入上一个命令的最后一个参数
Alt + 0-9 Alt + . # 插入历史命令的第N个参数
!! # 执行上一条命令
!$ # 上一条命令的最后一个参数
!string # 执行最近以string开头的命令
1.4 进程控制
bash
Ctrl + C # 终止当前运行的程序
Ctrl + Z # 暂停当前程序(挂起)
# 暂停后可以使用:
fg # 恢复前台运行
bg # 后台继续运行
jobs # 查看后台任务
Ctrl + D # 发送EOF(文件结束符),退出当前shell
Ctrl + L # 清屏(同clear命令)
Ctrl + S # 暂停屏幕输出(需配合Ctrl+Q恢复)
Ctrl + Q # 恢复屏幕输出
1.5 标签页与窗口
bash
# 通用终端快捷键
Ctrl + Shift + T # 新建标签页
Ctrl + Shift + W # 关闭当前标签页
Ctrl + PageUp # 切换到上一个标签页
Ctrl + PageDown # 切换到下一个标签页
Ctrl + Shift + N # 新建终端窗口
Ctrl + Shift + Q # 关闭终端窗口
# GNOME Terminal特有
F11 # 全屏切换
Ctrl + Shift + F # 搜索
Ctrl + Shift + + # 放大字体
Ctrl + - # 缩小字体
Ctrl + 0 # 恢复默认字体大小
1.6 自动补全与帮助
bash
Tab # 自动补全命令/文件名/路径
Tab Tab # 显示所有可能的补全选项
Alt + ? # 显示所有可能的补全(同按两次Tab)
Alt + * # 插入所有可能的补全
man 命令 # 查看命令手册
命令 --help # 查看命令帮助
Ctrl + Alt + H # 在终端显示快捷键帮助(部分终端)
二、Vim 文本编辑器
2.1 Vim的基本概念
Vim是一个模式编辑器,主要分为四种模式,其模式架构如下:
bash
普通模式 (Normal Mode)
├── 插入模式 (Insert Mode)
├── 可视模式 (Visual Mode)
└── 命令模式 (Command-line Mode)
2.1.1 普通模式 (Normal Mode)
普通模式是Vim的默认模式,当打开Vim时,就处于普通模式。在这个模式下,键盘上的每个键都是一个命令,而不是直接输入字符。
-
特点:
- 键盘按键执行命令,而非输入文本。
- 可以高效地移动、编辑文本。
- 是其他所有模式的"家"模式。
- 大多数时间应该停留在此模式。
-
如何进入普通模式
bash" 启动Vim时默认进入普通模式 vim filename.txt " 启动后即为普通模式 " 从其他模式返回普通模式: ESC " 最常用,左上角键 Ctrl+[ " 替代ESC,更易按到(无需移动手) Ctrl+C " 在某些情况下也有效(但不是所有情况)
2.1.2 插入模式(Insert Mode)
在插入模式下,可以像在普通文本编辑器中一样输入文本。
-
如何进入插入模式
在普通模式下,按以下键可以进入插入模式:
i:在光标前插入I:在行首插入a:在光标后插入A:在行尾插入o:在当前行下方新建一行并插入O:在当前行上方新建一行并插入
-
如何退出插入模式
- 按
Esc键或Ctrl+[返回普通模式。
- 按
2.1.3 可视模式(Visual Mode)
可视模式用于选择文本。可以选择字符、行或块,然后对选中的文本执行操作,比如删除、复制、替换等。
-
如何进入可视模式
在普通模式下,按以下键进入不同的可视模式:
v:字符可视模式(以字符为单位选择)V:行可视模式(以行为单位选择)Ctrl+v:块可视模式(矩形选择)
-
在可视模式中可以:
- 移动光标来调整选择区域。
- 对选中的文本执行命令,比如d(删除)、y(复制)、c(修改)等。
-
如何退出可视模式
- 按
Esc键或v、V、Ctrl+v(如果当前已经是对应的可视模式,则按一次退出)返回普通模式。
- 按
2.1.4 命令模式(Command Mode)
在命令模式下,可以输入命令来执行各种操作,比如保存文件、退出Vim、搜索替换等。
-
如何进入命令模式
在普通模式下,按
:键进入命令模式。 -
常用命令:
- 保存:
:w - 退出:
:q - 保存并退出:
:wq或:x - 强制退出(不保存):
:q! - 搜索:
/关键词(然后按n下一个,N上一个) - 换:
:%s/旧文本/新文本/g(全局替换)
- 保存:
-
如何退出命令模式
- 执行完命令后自动返回普通模式,或者按
Esc键取消命令并返回普通模式。
- 执行完命令后自动返回普通模式,或者按
2.2 启动与退出
bash
# 启动Vim
vim # 启动Vim
vim file.txt # 打开文件
vim +10 file.txt # 打开文件并跳转到第10行
vim +/pattern file.txt # 打开文件并搜索pattern
# 退出Vim
:q # 退出(如果文件已保存)
:q! # 强制退出,不保存修改
:wq # 保存并退出
:x # 保存并退出(仅当有修改时保存)
ZZ # 保存并退出(普通模式下)
ZQ # 不保存退出(普通模式下)
2.3 模式切换
模式切换关系图:

模式切换命令:
bash
i # 插入模式(在光标前插入)
I # 在行首插入
a # 在光标后插入
A # 在行尾插入
o # 在当前行下方新建一行插入
O # 在当前行上方新建一行插入
v # 进入可视模式(字符选择)
V # 进入可视模式(行选择)
Ctrl + V # 进入可视块模式
: # 进入命令模式
ESC # 返回普通模式
模式切换总结:
- 普通模式 → 插入模式:按
i、I、a、A、o、O等键 - 插入模式 → 普通模式:按
Esc或Ctrl+[ - 普通模式 → 可视模式:按
v、V、Ctrl+v - 可视模式 → 普通模式:按
Esc或v、V、Ctrl+v(如果当前已经是对应的可视模式,则按一次退出) - 普通模式 → 命令模式:按
: - 命令模式 → 普通模式:按
Esc或执行命令后自动返回
2.4 光标移动
bash
# 基本移动
h " 左
j " 下
k " 上
l " 右
0 " 行首
$ " 行尾
^ " 行首第一个非空白字符
_ " 行首第一个非空白字符(同^)
g_ " 行尾最后一个非空白字符
# 单词移动
w " 移动到下一个单词开头
W " 移动到下一个单词开头(忽略标点)
e " 移动到单词结尾
E " 移动到单词结尾(忽略标点)
b " 移动到上一个单词开头
B " 移动到上一个单词开头(忽略标点)
ge " 移动到上一个单词结尾
gE " 移动到上一个单词结尾(忽略标点)
# 行内移动
f{char} " 向前移动到字符char
F{char} " 向后移动到字符char
t{char} " 向前移动到字符char前
T{char} " 向后移动到字符char前
; " 重复上次f/F/t/T命令
, " 反向重复上次f/F/t/T命令
# 屏幕移动
gg " 文件开头
G " 文件末尾
:{n} " 跳转到第n行,如:10
{n}G " 跳转到第n行,如10G
Ctrl+f " 向下翻页
Ctrl+b " 向上翻页
Ctrl+d " 向下翻半页
Ctrl+u " 向上翻半页
H " 屏幕顶部
M " 屏幕中间
L " 屏幕底部
zt " 当前行置顶
zz " 当前行置中
zb " 当前行置底
# 标记和跳转
m{a-zA-Z} " 设置标记,如ma
`{mark} " 跳转到标记的精确位置,如`a
'{mark} " 跳转到标记行的行首,如'a
`` " 返回上次跳转的位置
'' " 返回上次跳转的行
`. " 返回上次修改的位置
'. " 返回上次修改的行
:marks " 显示所有标记
:delmarks a b c " 删除标记
2.5 编辑操作
bash
# 删除操作
x " 删除当前字符
X " 删除前一个字符
dd " 删除当前行
D " 删除到行尾(同d$)
d{motion} " 删除移动命令覆盖的区域
dw " 删除一个单词
d$ " 删除到行尾
d0 " 删除到行首
dgg " 删除到文件开头
dG " 删除到文件末尾
di" " 删除引号内的内容
da" " 删除引号及内容
dit " 删除HTML标签内的内容
dat " 删除HTML标签及内容
# 复制操作
yy " 复制当前行
Y " 复制当前行(同yy)
y{motion} " 复制移动命令覆盖的区域
yw " 复制一个单词
y$ " 复制到行尾
ygg " 复制到文件开头
yG " 复制到文件末尾
# 粘贴操作
p " 粘贴到光标后
P " 粘贴到光标前
]p " 粘贴并自动缩进
]P " 粘贴到光标前并自动缩进
# 剪切板
"*y " 复制到系统剪贴板
"+y " 复制到系统剪贴板(Linux)
"*p " 从系统剪贴板粘贴
"+p " 从系统剪贴板粘贴(Linux)
# 撤销与重做
u " 撤销
Ctrl+r " 重做
U " 撤销整行修改
:undo " 撤销树
:redo " 重做
# 重复操作
. " 重复上一次修改操作
@: " 重复上一次命令
@@ " 重复上一次宏
2.6 搜索替换
bash
# 搜索
/pattern " 向前搜索pattern
?pattern " 向后搜索pattern
n " 下一个匹配项
N " 上一个匹配项
* " 向前搜索当前光标下的单词
# " 向后搜索当前光标下的单词
/\<word\> " 搜索完整单词word
/\v " 使用very magic模式(简化正则)
/\c " 忽略大小写
/\C " 大小写敏感
/\V " 原义匹配(关闭特殊字符)
# 搜索高亮
:set hlsearch " 启用搜索高亮
:set nohlsearch " 禁用搜索高亮
:nohlsearch " 临时关闭高亮
:set incsearch " 实时搜索
# 替换
:s/old/new/ " 当前行第一个old替换为new
:s/old/new/g " 当前行所有old替换为new
:%s/old/new/g " 全文替换
:%s/old/new/gc " 全文替换,每次询问
:10,20s/old/new/g " 10-20行替换
:'<,'>s/old/new/g " 可视模式下选择区域替换
:%s/\<old\>/new/g " 替换完整单词
:%s/old/new/ge " 忽略错误继续替换
# 正则表达式替换示例
:%s/\s\+$// " 删除行尾空白
:%s/^\s\+// " 删除行首空白
:%s/\n\{3,}/\r\r\r/ " 多个空行替换为三个空行
:%s/foo/bar/g " 所有foo替换为bar
:%s/\d\+/NUM/g " 所有数字替换为NUM