Vim 工作流:模式、动作 + 文本对象的「语言」思维

工具与效率339 阅读约 4 分钟

很多人学 Vim 是背快捷键,背着背着就放弃了。其实 Vim 的精髓不是记忆,而是理解它把编辑设计成了一门**「动作 + 文本对象」的可组合语言**。掌握这个心智,命令是「拼」出来的,不是「背」出来的。

先搞懂模式

Vim 是模态编辑器,常用四个模式:

  • Normal(普通):默认模式,按键是命令(移动、删除、复制)。Esc 回到这里。
  • Insert(插入):真正打字。i / a / o 进入。
  • Visual(可视):选中文本。v(字符)/V(行)/Ctrl-v(块)。
  • Command(命令行): 开头,执行 :w :q 等。

新手最该改的习惯:打完字立刻 Esc 回 Normal,把 Normal 当「家」,而不是赖在 Insert 里。

核心:操作符 + 动作/文本对象

Vim 命令的结构是 操作符 + 范围,像句子一样组合:

操作符 含义
d delete 删除
c change 删除并进入插入
y yank 复制
v 选中

范围可以是动作(移动到哪)或文本对象

dw    删到下一个词         (d + w)
d$    删到行尾            (d + $)
ciw   改整个词           (c + iw=inner word)
ci"   改引号内的内容       (c + i")
dap   删一个段落          (d + ap=a paragraph)
yi(   复制括号内内容        (y + i()

看出来了吗?你不需要记「删词、删行、删段」几十个命令,只要记住 d/c/y 三个操作符 × 几个文本对象(iw/i"/i(/ap…),就能自由组合出几百种操作。这才是 Vim 高效的来源。

高频动作

h j k l   左下上右
w / b     下/上一个词
0 / ^ / $ 行首 / 首个非空 / 行尾
gg / G    文件头 / 文件尾
{ / }     上/下一段
%         匹配的括号跳转
f<char>   行内跳到某字符
/pattern  搜索;n/N 下一个/上一个

高效编辑

.         重复上一次修改(Vim 最强命令之一)
u / Ctrl-r 撤销 / 重做
x / dd    删字符 / 删整行
yy / p    复制行 / 粘贴
>> / <<   缩进 / 反缩进
ciw       改当前词(光标在词中任意位置都行)

那个 .(点)值得专门练——它重复上一次修改,配合精准的动作能极大减少重复劳动。

给新手的路线

  1. 先逼自己用 hjkl 不用方向键,用 Esc 不赖 Insert;
  2. d/c/y + iw/i"/i(/ap 练成肌肉记忆;
  3. 学会 ./搜索ciw
  4. 再逐步加 f/t 跳转、宏 q、多窗口。

别一上来装一堆插件——先把「动作语言」用熟,那才是 Vim 区别于其他编辑器的根本。

小结

Vim 高效的本质是「操作符 + 文本对象」的组合语言:记住 d/c/y 三个操作符和几个文本对象,命令就能像造句一样拼出来。把 Normal 当家、勤用 . 重复、用 hjkl 戒掉方向键——心智对了,快捷键自然就长出来了。

相关文章

评论 (8)

N

Nova

brew 我也踩过权限的坑,千万别 sudo

阿宽

已三连,期待更新

R

Ryan

homebrew 装东西老超时,有啥加速建议吗?

T

tobeornot

ci" di( 这套组合拳学完效率翻倍

Z

zoe

哈哈我也是这么理解的

二两

mac 上 vim 怎么共享系统剪贴板最省事?

G

Gavin

小项目我个人更倾向轻量方案,按需演进就好

麦兜

zsh 启动慢困扰我半年,照着排查果然是某个插件