模式与保存
:w / :q / :wq / :q!保存、退出、保存并退出、强制退出不保存。
:w file 另存为;:w! 强制;:x 修改过则保存并退出;:qa! 强制退出全部;:wqa
:w | :q 或 ZZi / a / o / I / A / O进入插入模式:i 在光标前 / a 在光标后;o / O 在下 / 上方开新行;I/A 行首 / 行尾。
i 在此编辑 => o 新行并进入插入 => I 行首 => A 行尾<Esc> / Ctrl-[返回普通模式(也可用 Ctrl-c / Ctrl-[)。同时取消未完成的算符。
i Hello<Esc> ; 再 :w光标移动
h / j / k / l向左 / 下 / 上 / 右移动一个字符。(方向键也可以。)
5j — 向下移动 5 行w / b / e / W / B / E按“词”移动(标点与空白分别分隔);W/B/E 以空白作为分隔。
wdw ; 3W 跳到第三个空白分隔词0 / $ / ^硬行首 / 行尾 / 第一个非空字符。
0 到行首;$ 到行尾;^ 到首个非空字符gg / G / :N首行 / 末行 / 跳转到第 N 行。也支持百分比定位:50%。
gg=G 格式化整个文件(配合 =)H / M / L / Ctrl-d / Ctrl-u屏幕顶部 / 中部 / 底部(H/M/L);向下 / 向上翻半页(Ctrl-d / Ctrl-u)。
Ctrl-d 和 Ctrl-u 浏览;10Ctrl-f 向前翻一整页{ / } / ( / )按段落(大括号)或句子(小括号,纯 ASCII 文本)跳转。
5{ ; 2} 向前跳两段f<char> / F<char> / t / T ; ; / ,在本行查找 / 反向查找下一个字符(f/F);用 ; / , 重复。t/T 停在字符之前。
f, 把光标带到下一个逗号;df, 删除到下一个逗号为止插入模式
Ctrl-h / Ctrl-w / Ctrl-u在输入时退格 / 删除一个词 / 删除到行首——让编程用 Vim 更顺手。
i hello world<Ctrl-w> 剩下 'hello 'Ctrl-o <cmd> / Ctrl-r <reg>执行一次普通模式命令(Ctrl-o);在插入模式粘贴寄存器(Ctrl-r)。
Ctrl-r = expr 临时计算一个表达式
Ctrl-r " 无名寄存器;Ctrl-r 0 yank 寄存器;Ctrl-r =5+5 插入 10编辑算符
d / x / X / c删除 / 删除光标处字符 / 退格删除 / 修改(删除并进入插入)。可与动作组合:dw/xp/c$。
dd 删除整行;cc 修改整行;D 删除到行尾;C 修改到行尾
dw | dw$ | dw | 3dd | C 重排当前行y / yy / Y复制(yank)。yy / Y 复制当前行;y$ / yW 等接受一个动作。
y2w yy p gp — 复制 2 个词与一行,粘贴,再次粘贴(光标不移动)p / P / gp / gP在光标后(p) / 前(P)粘贴;gp/gP 让光标停留在粘贴内容的末尾。
p 粘贴到下方;P 粘贴到上方;gp 粘贴到后面且光标到末尾u / Ctrl-r / U撤销 / 重做(Ctrl-r)。U 恢复当前行为初始状态(已不推荐,可用重复计数代替)。
u u u ; Ctrl-r Ctrl-r ; 5u 撤销最近 5 次修改. / @: / q:重复上一次编辑(.)——极为强大。@: 重复最近一条宏;q: 打开命令历史窗口。
i Monday<Esc> ; 再用 . . . . 跨多行重复r / R / J / gq替换单个字符(r<char>)/ 进入替换模式(R)/ 合并行(J,gJ 不加空格)/ 格式化(gq{motion})。
raZ 改一个字符;J 合并行;gqap 格式化当前段落缩进
>> / << / = / :set autoindent缩进 / 反缩进 / 自动缩进(=)。可与动作组合:=G 到结尾;gg=G 格式化整文件。
5>> 缩进 5 行;=ap 自动缩进段落;gg=G 格式化整个缓冲区搜索与替换
/pat / ?pat / n / N向下(/)/ 向上(?)搜索;n / N 在同方向 / 反方向重复。
/\<word\> 词边界;\v very-magic 正则;\c 忽略大小写;\C 区分大小写
/TODO\c ; n 下一个;N 上一个;* / # 搜索光标下的词* / # / g* / g#搜索光标下的词:* 向下(# 向上)。g* / g# 包含相邻边界。
光标停在 foo 上按 * — 跳到下一个 foo,n 继续:%s/pat/rep/g / :5,12s/foo/bar/g替换——可指定范围、标志、按匹配确认。
%s / g 全局;/c 逐个确认;/i 忽略大小写;/I 区分大小写;/e 不报错;/n 仅计数
:%s/\bfoo\b/bar/gc — 把整词 foo 替换为 bar,每处确认:g/pat/d / :v/pat/m$对匹配行执行动作::g/pat/d 删除匹配行;:v/pat/m$ 把非匹配行移到末尾。
:v/^#\|^$/d 删除所有只包含注释/空行的行缓冲区、标签页、窗口
:e file / :b<N> / :bn :bp :ls打开另一文件(:e),列出缓冲区(`:ls`),按编号跳转(`:b 3`),下一个/上一个(`:bn` / `:bp`)。
:e . 文件浏览器;:bd 删除当前缓冲区;:bn! 强制;hidden
:e src/index.ts :ls :b 3 :bp :bn:sp :vs / Ctrl-w j/k/h/l水平 / 垂直分屏;Ctrl-w + 方向 在窗口间移动。
:vs src/index.ts | Ctrl-w l | Ctrl-w j — 在相邻窗格中工作:tabnew / gt / gT / :tabclose把每个任务放在独立“屏”中时使用标签页。
:tabnew README.md gt gT :tabclose :tabonly视图与设置
:set nu / :set relativenumber切换行号显示;`relativenumber` 显示到光标的距离(配合动作很顺手)。
:set relativenumber && 5j 让你在脑中数得清:set syntax on / :set filetype=ts开启语法高亮 / 为无后缀文件强制指定文件类型。
:set ft=markdown ; :set bg=dark 切换深色背景:set paste / :set wrap / :set hlsearch粘贴相关开关:paste 避免插入模式自动缩进;hlsearch 保留搜索高亮。
:noh 临时清除高亮
:set paste 后在某些终端里 i<Ctrl-r>+ 粘贴可视模式与列编辑
v / V / Ctrl-v字符可视 / 行可视 / 块可视——块模式可以按列编辑。
v 下按 o 切换选区端点
Ctrl-v 5j I // Esc — 给 6 行加上 // 前缀(经典的注释/反注释)gv / o (in visual)重新选中上一次的选区;`o` 切换选区活动端点。
做一次块选区,修改内容,再用 . 重复同样的修改寄存器与宏
"ayy / "ap / :reg用命名寄存器 a 复制,然后从 a 粘贴。:reg 列出全部寄存器。
"0 最近 yank;"_ 黑洞寄存器;"+ 系统剪贴板(需要 +clipboard)
"ayy "ap ; :reg 列出命名寄存器与 0、+、*q<reg> ... q / @<reg> / @@把一段操作录到寄存器 <reg>;@<reg> 回放;@@ 重复上一次的宏。
qa I" <Esc> $ " <Esc> q 5j @a — 在多行末尾加引号外部交互
:!cmd / :r !cmd在 Vim 内执行 shell 命令;:r !cmd 把命令输出插入到当前光标处。
:r !date ; :!%:clean :r ...:r file / :source file.vim把文件内容读到光标位置;:source 执行一段 Vim 脚本(.vimrc、插件文件)。
:r ~/.vimrc 把整份配置粘贴进来;:runtime! syntax/foo.vim:help <topic>Vim 的离线文档质量很高。`Ctrl-]` 跳转到光标下的标签。
:help gq :help motion.txt :help :terminal — 开启内置终端(8.0+):terminal打开内置终端(Vim 8+ / Neovim)。
:vert terminal 垂直分屏;:term bash;Ctrl-w N 退出终端模式
:vert term bash :resize 15 && 实时跑测试速查页版本 1.0.0
适用于 Vim 9 / Neovim 0.9+