~/vim-efficiency.cheat utf-8 · vim NORMAL
~
~
~
~
~
~
~

Vim 效率速查_

不是命令大全,而是帮你建立 「动词 + 范围」 的肌肉记忆。学会组合,比背一百条命令更快。命令按类别分色,配合下方搜索快速定位。

/ / 聚焦 · Esc 清除
核心语法 · 一切效率的起点
[次数] + 操作符 + [次数] + 动作 / 文本对象

操作符 = 你要做什么(d 删 / c 改 / y 复制 / v 选) · 范围 = 作用到哪里(移动命令 或 文本对象)。两者自由拼接,组合出几乎所有编辑动作。

dw删除一个词
ci"改写引号内内容
yap复制整个段落
2dd删除 2 行
dt;删到下一个 ; 之前
>i{缩进花括号代码块
.重复上次修改(最强效率键)
ciw改写光标所在的词

移动 Motions

w/W下一个词首(W 忽略标点,按空白分词)
b/B上一个词首
e/ge当前词尾 / 上一个词尾
0/^行首 / 行首第一个非空白字符
$/g_行尾 / 行尾最后一个非空白字符
gg/G文件开头 / 结尾
{n}G跳到第 n 行(或 :{n}
f{c}/F{c}行内向后 / 向前跳到字符 c
t{c}/T{c}跳到字符 c 之前 / 之后
;/,重复 / 反向重复上次 f t 跳转
}/{下一段 / 上一段
%跳到匹配的括号 ( ) [ ] { }
HML跳到屏幕 顶 / 中 / 底
^d/^u向下 / 向上 半屏(Ctrl-d / Ctrl-u)
^f/^b向下 / 向上 整屏
*/#搜索光标下的词 向下 / 向上
n/N下 / 上一个搜索结果
原则:行内移动靠 ft,远距离靠 / 搜索或 *。别一路按 l / j

文本对象 Text Objects · 杀手锏

i = inside(内部) a = around(含边界)。与 dcyv 组合,光标在范围内任意处都能精准操作。
iw/aw一个词 / 一个词含相邻空格
is/as一个句子
ip/ap一个段落 / 含相邻空行
i"/a"双引号内 / 含引号
i'/i`单引号 / 反引号内
i(=ib圆括号 ( ) 内
i{=iB花括号 { } 内
i[/i<方括号 [ ] / 尖括号 < > 内
it/atHTML/XML 标签内 / 含标签
常用组合:ci( 改参数 · di" 删字符串 · yit 复制标签内容 · vi{ 选中代码块 · da{ 连大括号一起删。

编辑 Operators

dcy删除 / 修改 / 复制(后接范围)
ddccyy整行 删 / 改 / 复制
DCY删 / 改 / 复制 到行尾
x/X删除光标处 / 前一个字符
r{c}/R替换单字符 / 进入替换模式
s/S删字符并插入 / 删整行并插入
~切换光标处大小写
gU{m}/gu{m}转大写 / 小写(按范围)
J/gJ合并下一行(带 / 不带空格)
>>/<<整行 右 / 左 缩进
=自动缩进(如 =i{ 格式化块)
p/P粘贴到光标 后 / 前
u/^r撤销 / 重做(Ctrl-r)
.重复上一次修改,效率核心

进入插入 Insert

i/I光标前 / 行首 插入
a/A光标后 / 行尾 插入
o/O下方 / 上方 新建一行
gi回到上次离开插入的位置
Esc/^[退出插入模式(Ctrl-[ 更顺手)
^o插入中临时执行一个普通命令
^w/^u插入时 删一个词 / 删到行首
^r{r}插入时粘贴寄存器 r 内容
心法:插入模式只是「打字间隙」,改完立刻 Esc 回普通模式,别赖在插入里用方向键。

查找替换 Search & Replace

/{pat}/?{pat}向下 / 向上 搜索
n/N下 / 上一个匹配
*/#搜索光标下的整词
:s/a/b/替换当前行 第一个 a 为 b
:s/a/b/g替换当前行 所有 a
:%s/a/b/g全文替换
:%s/a/b/gc全文替换并 逐个确认
:%s//b/g复用上次搜索词作为目标
:noh清除搜索高亮
技巧:在模式前加 \v(very magic)可让正则更接近常规写法,少写反斜杠。配合 * + :%s//新词/g 改全文同名变量超快。

可视模式 Visual

v/V字符可视 / 整行可视
^v块可视(列编辑,Ctrl-v)
o跳到选区的另一端调整范围
gv重新选中上一次的选区
vd选中后接 d c y > < = 等操作
^vI块选后 多行同列前 批量插入
^vA块选后 多行同列后 批量插入
^vc块选后多行同时修改
提醒:能用文本对象就别手动选。但 多行加前缀/对齐注释 时,块可视 ^v + I 是神器。

寄存器/剪贴板 Registers

"{r}y/"{r}p复制 / 粘贴 到具名寄存器 r
"0p粘贴最近一次 yank(不被删除覆盖)
"+y/"+p系统剪贴板 复制 / 粘贴
".p粘贴最近插入的文本
"%p粘贴当前文件名
"_d删除但不进寄存器(黑洞,不污染复制内容)
:reg查看所有寄存器内容
痛点解法:"0p 反复粘贴同一段,避免被中途的 d 覆盖;想保留剪贴时删除用 "_d

Macros · 批量利器

q{r}开始录制操作到寄存器 r
q停止录制
@{r}执行宏 r
@@重复上次执行的宏
{n}@{r}执行宏 n 次(如 100@a
录制原则:① 从一致的起点开始(如 0);② 录制一次「原子修改」;③ 结尾让光标落到下一目标(如 j),这样可被无限重复。
进阶:宏存在寄存器里,可用 "ap 粘出文本、手改、再 0"ay$ 存回修正。

标记/跳转 Marks & Jumps

m{a}在当前位置设置标记 a
`{a}/'{a}跳到标记 精确位置 / 所在行首
``跳回上次跳转前的位置
`.跳到最后一次修改的位置
^o/^i跳转列表 后退 / 前进(Ctrl-o/i)
g;/g,修改列表 后退 / 前进
高频用法:跨大段文件编辑时,^o / ^i 像浏览器的前进后退,配合 `` 在两点间反复切换。

窗口/缓冲区/标签 Windows & Buffers

:sp/:vsp水平 / 垂直 分屏
^w hjkl切换到 左/下/上/右 窗口(Ctrl-w 后接方向)
^w w循环切换窗口
^w q/o关闭当前窗口 / 只留当前
:e {f}打开文件 f
:ls/:b{n}列出 / 切换到缓冲区 n
:bn/:bp下 / 上一个缓冲区
gt/gT下 / 上一个标签页(:tabnew 新建)

效率心法 The 80/20 Rules

  1. 留在普通模式。把插入当打字间隙,改完立刻 Esc。
  2. 优先文本对象。ci" 永远好过手动选中再删改。
  3. . 当主力。刻意设计能被 . 重复的「原子修改」。
  4. 重复 3 次以上就录宏,而不是手动一遍遍来。
  5. 善用次数前缀:3dd5j2ci(
  6. 行内移动用 f/t,别一路 l
  7. 远距离用 / 搜索或 *,别狂按 j
  8. 永远别长按方向键,那是放弃 Vim 的信号。
没有匹配的命令  —— 试试别的关键词,或按 Esc 清除
NORMAL vim-efficiency.cheat utf-8 · 100% · 提示:先练「动词+范围」