vim作为一款功能强大的文本编辑器,其高效的操作依赖于命令的组合使用,以下将详细介绍vim的常用命令,涵盖模式切换、文本编辑、文件操作、搜索替换、窗口管理及高级技巧,帮助用户系统掌握vim的使用方法。

(图片来源网络,侵删)
模式基础与切换
vim的核心在于不同工作模式的切换,主要分为以下四种模式:
- 普通模式(Normal Mode):启动vim后的默认模式,用于导航、删除、复制等操作,所有命令均以键位为单位,如
h
左移、j
下移、k
上移、l
右移。 - 插入模式(Insert Mode):用于文本输入,可通过以下命令进入:
i
:在光标前插入a
:在光标后插入o
:在当前行下方新建行并插入I
:在行首插入A
:在行尾插入O
:在当前行上方新建行并插入- 按
Esc
键可返回普通模式。
- 可视模式(Visual Mode):用于选择文本,分为三种:
v
:字符选择,从光标位置开始选择V
:行选择,选中整行Ctrl+v
:块选择,用于矩形区域编辑- 选择后可配合
d
删除、y
复制、c
剪切并进入插入模式。
- 命令行模式(Command-line Mode):用于执行复杂命令,通过以下方式进入:
- 进入命令行,支持保存、退出、搜索等操作
- 向下搜索
- 向上搜索
- 按
Enter
执行命令,按Esc
取消。
文本编辑命令
在普通模式下,可通过快捷键高效编辑文本:
- 删除与剪切:
x
:删除光标处字符dd
:删除当前行dw
:删除一个单词d$
:删除到行尾d^
:删除到行首ndd
:删除n行(n为数字)D
:等同于d$
,删除到行尾
- 复制与粘贴:
y
:复制,需配合选择命令,如yy
复制当前行,yw
复制一个单词p
:在光标后粘贴P
:在光标前粘贴nyy
:复制n行
- 撤销与重做:
u
:撤销上一步操作Ctrl+r
:重做被撤销的操作U
:撤销对当前行的所有修改
- 替换与修改:
r
:替换光标处字符(按r
后输入新字符)R
:进入替换模式,连续替换光标后字符c
:修改,如cc
删除当前行并进入插入模式,cw
修改一个单词s
:删除光标处字符并进入插入模式S
:等同于cc
文件操作与命令行模式
命令行模式(按进入)支持文件管理及高级功能:
- 保存与退出:
w
:保存文件q
:退出vimwq
:保存并退出q!
:强制退出(不保存修改)wq!
:强制保存并退出(需文件权限)x
:保存并退出(若文件未修改则不写入)
- 文件另存与读取:
w filename
:将文件另存为filenamer filename
:读取文件内容到当前光标位置
- 缓冲区与标签页:
bn
:切换到下一个缓冲区bp
:切换到上一个缓冲区b num
:切换到编号为num的缓冲区tabnew
:新建标签页tabn
:切换到下一个标签页tabp
:切换到上一个标签页tabclose
:关闭当前标签页
搜索与替换
vim支持强大的文本搜索与替换功能:

(图片来源网络,侵删)
- 搜索文本:
/pattern
:向下搜索pattern(pattern为正则表达式)?pattern
:向上搜索patternn
:跳转到下一个搜索结果N
:跳转到上一个搜索结果/pattern\c
:忽略大小写搜索(\c
表示不区分大小写)set ic
:设置搜索时忽略大小写(set noic
恢复)
- 替换文本:
s/pattern/replacement/g
:替换当前行中所有pattern为replacement%s/pattern/replacement/g
:替换整个文件中所有pattern为replacementn,ms/pattern/replacement/g
:替换第n行到第m行的pattern为replacements/pattern/replacement/gc
:替换时每次确认(需输入y
确认替换,n
跳过)
光标导航与窗口管理
高效的光标移动和窗口分割可提升编辑效率:
- 光标快速移动:
w
:移动到下一个单词开头e
:移动到当前单词末尾b
:移动到上一个单词开头0
或^
:移动到行首(0
到绝对行首,^
到第一个非空字符)- 移动到行尾
gg
:移动到文件第一行G
:移动到文件最后一行nG
:移动到第n行(如10G
跳转到第10行)H
:移动到屏幕首行M
:移动到屏幕中间行L
:移动到屏幕末行
- 窗口操作:
split
或sp
:水平分割窗口vsplit
或vs
:垂直分割窗口Ctrl+w w
:在窗口间切换Ctrl+w h/j/k/l
:切换到左/下/上/右窗口Ctrl+w +
:增加当前窗口高度Ctrl+w -
:减少当前窗口高度Ctrl+w =
:使所有窗口等高q
:关闭当前窗口(若为最后一个窗口则退出vim)
高级技巧与自定义
- 宏录制与执行:
q
+字母键
(如q a
):开始录制宏到寄存器aq
:停止录制- +
字母键
(如@ a
):执行寄存器a中的宏 - 重复执行上一次执行的宏
- 多光标编辑:
- 普通模式下按
Ctrl+v
进入块选择模式,选中多行后按I
或A
插入文本,按Esc
批量插入 - 插入模式下按
Ctrl+n
或Ctrl+x
进行自动补全
- 普通模式下按
- 自动补全与代码折叠:
Ctrl+x Ctrl+f
:补全文件名Ctrl+x Ctrl+l
:补全整行zf
+动作
(如zf 5G
):创建从当前行到第5行的折叠zo
:展开折叠zc
:折叠zM
:折叠所有zR
:展开所有
- 自定义配置:
- 在用户目录下创建
.vimrc
文件配置vim,set number " 显示行号 set tabstop=4 " 制表符宽度为4 set expandtab " 将制表符转换为空格 set autoindent " 自动缩进 set syntax on " 开启语法高亮
- 配置文件修改后需重启vim或执行
source %
生效。
- 在用户目录下创建
常用命令速查表
功能分类 | 命令 | 说明 |
---|---|---|
模式切换 | i /a /o |
进入插入模式 |
Esc |
返回普通模式 | |
v /V /Ctrl+v |
进入可视模式(字符/行/块) | |
光标移动 | hjkl |
左/下/上/右移动 |
w /e /b |
单词级别移动 | |
gg /G |
跳转首行/末行 | |
文本编辑 | dd /yy /p |
删除行/复制行/粘贴 |
u /Ctrl+r |
撤销/重做 | |
搜索替换 | /pattern |
向下搜索 |
%s/old/new/g |
全局替换 | |
文件操作 | w /q /wq |
保存/退出/保存并退出 |
窗口管理 | split /vsplit |
水平/垂直分割窗口 |
Ctrl+w w |
切换窗口 |
FAQs
问题1:如何在vim中同时编辑多个文件?
解答:可通过以下方式实现:
- 启动vim时指定多个文件:
vim file1.txt file2.txt
,通过bn
/bp
切换文件; - 在vim中使用
split file2.txt
水平分割窗口打开第二个文件,通过Ctrl+w w
在窗口间切换; - 使用标签页管理:
tabnew file2.txt
新建标签页,通过tabn
/tabp
切换。
问题2:vim中如何批量删除包含特定字符串的行?
解答:可通过搜索与替换实现:
- 使用
v/pattern/d
命令(v
表示非匹配行,d
表示删除),例如删除包含"error"的行:v/error/d
; - 或结合可视模式:输入
/pattern
搜索后,按Ctrl+n
和Ctrl+x
标记所有匹配项,按V
进入行选择模式,按d
删除; - 若需精确匹配,可在pattern中使用正则表达式,如
v/^\s*error/d
删除行首或包含空格的"error"行。

(图片来源网络,侵删)