vim 作为一款强大的文本编辑器,其命令技巧的掌握能极大提升编辑效率,以下从基础操作、光标移动、文本编辑、搜索替换、窗口管理、宏录制与执行、高级配置等方面详细介绍 vim 的实用命令技巧。

基础操作中,vim 的三种模式是核心:普通模式(默认)、插入模式和命令行模式,从普通模式进入插入模式常用命令有 i
(光标前插入)、a
(光标后插入)、o
(下方新开一行插入)、I
(行首插入)、A
(行尾插入)、O
(上方新开一行插入),返回普通模式按 Esc
或 Ctrl+[
,退出 vim 可用 q
(退出)、wq
(保存退出)、q!
(不保存强制退出)、x
(保存退出若文件有修改),保存文件用 w 文件名
,另存为 saveas 新文件名
。
光标移动是高效编辑的基础,普通模式下,字符级移动:h
(左)、l
(右)、j
(下)、k
(上);单词级移动:w
(到下一个单词首)、e
(到当前单词尾)、b
(到上一个单词首)、W
/E
/B
(以空白分隔的单词为单位);行级移动:0
(行首)、^
(到行首第一个非空白字符)、(行尾);屏幕级移动:H
(到屏幕首行)、M
(到屏幕中间行)、L
(到屏幕末行)、gg
(到文件首行)、G
(到文件末行)、nG
(到第 n 行,如 5G
到第 5 行);段落移动:(到上一段开头)、(到下一段开头)。
文本编辑命令包含删除、复制、剪切与粘贴,删除:x
(删除光标处字符)、nx
(删除后 n 个字符)、dd
(删除当前行)、ndd
(删除当前行及后 n-1 行)、d$
(删除到行尾)、d^
(删除到行首第一个非空白字符)、dw
(删除一个单词)、dG
(删除到文件末尾)、dgg
(删除到文件开头),复制与剪切:y
(复制)与 d
(剪切)用法类似,如 yy
(复制当前行)、nyy
(复制 n 行)、yw
(复制一个单词)、y$
(复制到行尾);剪切后无需额外操作,删除内容已自动存入剪贴板,粘贴:p
(在光标后粘贴)、P
(在光标前粘贴),若复制/剪切的是行,则粘贴在当前行下方/上方。
搜索与替换功能常用 和 进行正向/反向搜索,输入关键词后按回车,n
跳到下一个匹配项,N
跳到上一个,替换命令:s/旧内容/新内容/g
(替换当前行所有匹配)、%s/旧内容/新内容/g
(替换整个文件所有匹配,可加 c
确认,如 %s/old/new/gc
),高级搜索:(搜索光标所在单词)、(反向搜索光标所在单词)、\v
(使用正则表达式,如 \vsearch(\d+)
可匹配 "search123")。

窗口管理支持多文件编辑,分屏:split
或 sp
(水平分屏,当前文件在上)、vsplit
或 vs
(垂直分屏,当前文件在左);切换窗口:Ctrl+w+w
(顺时针切换)、Ctrl+w+h/j/k/l
(按方向切换到对应窗口);关闭窗口:close
或 Ctrl+w+c
(关闭当前窗口,若只剩一个窗口则退出)、only
或 Ctrl+w+o
(关闭其他窗口,仅保留当前窗口);移动窗口:Ctrl+w+H/J/K/L
(将当前窗口移动到屏幕左/下/上/右)。
宏录制与执行可重复复杂操作,录制:普通模式下按 q
加寄存器名(如 qa
)开始录制,输入一系列命令,按 q
停止录制,执行:@a
(执行寄存器 a
的宏),(重复执行上一次执行的宏),示例:录制将光标所在单词转为大写的宏:qa
,gUiw
(将单词转为大写),q
,执行 @a
即可。
高级配置可通过 .vimrc
文件个性化设置,常用配置:set number
(显示行号)、set relativenumber
(显示相对行号)、set tabstop=4
(制表符宽度 4)、set expandtab
(将制表符转换为空格)、set autoindent
(自动缩进)、set syntax on
(开启语法高亮)、set hlsearch
(高亮搜索结果)、set nohlsearch
(关闭高亮搜索)、set ignorecase
(搜索忽略大小写)、set smartcase
(若搜索含大写则区分大小写),配置文件路径:Linux/macOS 下 ~/.vimrc
,Windows 下 $VIM/_vimrc
。
操作类别 | 命令 | 功能说明 |
---|---|---|
模式切换 | i/a/o/I/A/O | 进入插入模式(不同位置) |
Esc/Ctrl+[ | 返回普通模式 | |
退出 | q/:wq/:q!/:x | 退出/保存退出/强制退出/保存退出 |
光标(字符) | h/j/k/l | 左/下/上/右移动 |
光标(单词) | w/e/b/W/E/B | 单词首/尾/首(跨空白分隔) |
光标(行) | 0/^/$ | 行首/行首非空白/行尾 |
光标(屏幕) | H/M/G/nG | 屏幕首/中/末/第 n 行 |
删除 | x/nx/dd/ndd/d$/dw/dG | 删除字符/多行/到行尾/单词/到文件末 |
复制 | y/yy/nyy/yw/y$ | 复制字符/行/多行/单词/到行尾 |
粘贴 | p/P | 光标后/前粘贴 |
搜索 | 正向/反向/搜索当前单词/反向搜索当前单词 | |
替换 | s/旧/新/g:%s/旧/新/gc | 当前行/文件替换(可确认) |
分屏 | sp/:vs | 水平/垂直分屏 |
窗口切换 | Ctrl+w+w/h/j/k/l | 切换窗口/按方向切换 |
宏录制 | q@/@@ | 开始录制/执行宏/重复执行宏 |
相关问答FAQs:

-
问:vim 中如何快速跳转到指定行?
答:普通模式下输入行号后按G
,如跳转到第 100 行,输入100G
;或命令行模式下输入100
回车。 -
问:vim 如何批量删除包含特定字符串的行?
答:使用g/字符串/d
命令,字符串
为要匹配的内容,g
表示全局匹配,d
表示删除,例如删除所有包含 "error" 的行,输入g/error/d
。