以下是一份 Vim 命令大全 ,涵盖 编辑模式(Insert Mode) 、命令模式(Normal Mode) 和 视图模式(Visual Mode) 的常用操作,适合初学者和进阶用户使用。
🧾 Vim 模式简介
Vim 是一个模式化编辑器,主要有以下几种模式:
模式 | 进入方式 | 说明 |
---|---|---|
正常模式(Normal Mode) | 启动 Vim 默认进入此模式 | 可执行移动光标、复制粘贴等操作 |
插入模式(Insert Mode) | 按 i , a , o 等键进入 |
可以输入文本内容 |
视觉模式(Visual Mode) | 按 v , V , Ctrl + v 进入 |
可以选择文本块进行操作 |
命令行模式(Command-line Mode) | 按 : 或 / 进入 |
执行保存、搜索、替换等命令 |
🔧 一、正常模式(Normal Mode)命令
启动 Vim 默认进入此模式。按下
Esc
可从其他模式返回。
🔍 光标移动
命令 | 功能 |
---|---|
h |
向左移动一个字符 |
j |
向下移动一行 |
k |
向上移动一行 |
l |
向右移动一个字符 |
w |
移动到下一个单词的开头 |
b |
移动到上一个单词的开头 |
e |
移动到当前或下一个单词的结尾 |
0 |
移动到当前行的行首 |
$ |
移动到当前行的行尾 |
gg |
跳转到文件开头 |
G |
跳转到文件末尾 |
nG |
跳转到第 n 行(如 5G 到第 5 行) |
Ctrl + f |
向下翻页 |
Ctrl + b |
向上翻页 |
Ctrl + d |
向下滚动半页 |
Ctrl + u |
向上滚动半页 |
✏️ 编辑操作
命令 | 功能 |
---|---|
x |
删除当前字符 |
X |
删除前一个字符 |
dw |
删除一个单词 |
dd |
删除整行 |
ndd |
删除 n 行(如 3dd 删除 3 行) |
d$ |
删除从光标位置到行尾 |
d0 |
删除从光标位置到行首 |
yy |
复制当前行 |
nyy |
复制 n 行 |
yw |
复制一个单词 |
p |
在光标下方粘贴 |
P |
在光标上方粘贴 |
u |
撤销一次修改 |
Ctrl + r |
重做一次撤销 |
. |
重复上一次编辑操作 |
⚙️ 文件操作
命令 | 功能 |
---|---|
:w |
保存文件 |
:w filename |
另存为 filename |
:q |
退出(无修改时) |
:q! |
强制退出且不保存修改 |
:wq |
保存并退出 |
:wq! |
强制保存并退出 |
:e filename |
打开另一个文件 |
:set number 或 :set nu |
显示行号 |
:set nonumber 或 :set nonu |
隐藏行号 |
:set list |
显示隐藏字符(如空格、Tab) |
:set tabstop=4 |
设置 Tab 宽度为 4 个字符 |
:set autoindent |
自动缩进 |
:set paste |
进入粘贴模式(防止自动缩进干扰) |
:set nopaste |
关闭粘贴模式 |
🔍 搜索与替换
命令 | 功能 |
---|---|
/pattern |
向后搜索 pattern |
?pattern |
向前搜索 pattern |
n |
查找下一个匹配项 |
N |
查找上一个匹配项 |
:%s/old/new/g |
替换整个文件中的 old 为 new |
:1,10s/old/new/g |
替换第 1~10 行中的 old 为 new |
:s/old/new/ |
替换当前行第一个匹配项 |
:s/old/new/g |
替换当前行所有匹配项 |
:s/old/new/gc |
替换当前行所有匹配项,并确认每个替换 |
✍️ 二、插入模式(Insert Mode)
按以下任意键可进入插入模式,按
Esc
返回正常模式。
命令 | 功能 |
---|---|
i |
在光标前插入 |
I |
在行首插入 |
a |
在光标后插入 |
A |
在行尾插入 |
o |
在当前行下方新建一行并插入 |
O |
在当前行上方新建一行并插入 |
s |
删除当前字符并进入插入模式 |
S |
删除当前行并进入插入模式 |
🧮 三、视觉模式(Visual Mode)
按以下任意键进入视觉模式,用于选中文本进行操作。
命令 | 功能 |
---|---|
v |
字符选择模式(Character-wise Visual Mode) |
V |
行选择模式(Line-wise Visual Mode) |
Ctrl + v |
块选择模式(Block-wise Visual Mode) |
o |
切换光标起始点 |
> |
向右缩进选中区域 |
< |
向左缩进选中区域 |
y |
复制选中内容 |
d 或 x |
删除选中内容 |
c |
删除选中内容并进入插入模式 |
: |
对选中区域执行命令(如 :'<,'>s/old/new/g ) |
💡 四、命令行模式(Command-line Mode)
按
:
或/
或?
进入该模式,用于执行命令。
命令 | 功能 |
---|---|
:w |
保存 |
:q |
退出 |
:wq |
保存并退出 |
:q! |
不保存强制退出 |
:/pattern |
搜索 pattern 并跳转到第一次出现的位置 |
:help |
打开帮助文档 |
:help keyword |
查找关键字的帮助信息 |
:registers |
查看剪贴板寄存器内容 |
:map |
查看按键映射 |
:syntax on/off |
开启/关闭语法高亮 |
:filetype plugin indent on |
开启智能缩进和插件支持 |
🎨 五、高级技巧(可选)
技巧 | 命令 |
---|---|
多窗口分屏 | :split (水平)或 :vsplit (垂直) |
切换窗口 | Ctrl + w + 方向键 |
打开多个文件 | vim file1 file2 |
在多个文件之间切换 | :next / :prev / :first / :last |
加载插件管理器(如 Plug) | :PlugInstall (需配置 vim-plug) |
使用宏录制 | q{a-z} 录制宏,@{a-z} 执行宏 |
快速注释代码(结合插件) | 如 NERD Commenter : <leader>cc 注释选中行 |
📄 六、实用示例
示例 1:查找并替换
vim
:%s/foo/bar/g
将全文中所有 foo
替换为 bar
示例 2:显示行号并跳转到第 50 行
vim
:set number
:50
示例 3:多窗口打开两个文件
vim
:split otherfile.txt
示例 4:快速删除 5 行
vim
5dd
📚 总结表格
操作 | 命令 |
---|---|
进入插入模式 | i , a , o 等 |
返回正常模式 | Esc |
删除字符 | x |
删除行 | dd |
复制行 | yy |
粘贴 | p |
撤销 | u |
重做 | Ctrl + r |
保存 | :w |
退出 | :q |
保存并退出 | :wq |
搜索 | /keyword |
替换 | :%s/old/new/g |
显示行号 | :set number |
进入选择模式 | v , V , Ctrl + v |
如果你是新手,可以先掌握以下核心命令:
vim
i # 进入插入模式
Esc # 返回正常模式
:wq # 保存并退出
:x # 保存并退出(简写)
dd # 删除一行
yy p # 复制粘贴一行
u # 撤销
Ctrl + r # 重做