Vim 修改(change)命令完整学习笔记
目录
文章目录
- Vim 修改(change)命令完整学习笔记
- 目录
- 1. 核心概念
- 2. 单词级操作
- 2.1 基础单词修改
- 2.2 精确单词操作
- 3. 括号和引号操作
- 3.1 内容修改(inside)
- 3.2 包含符号修改(around)
- 4. 行级操作
- 4.1 整行修改
- 4.2 行内范围修改
- 5. 字符级操作
- 6. 文档级操作
- 7. 搜索结合操作
- 8. 可视模式操作
- 9. 特殊命令
- 10. 命令速查表
- 11. 学习建议
- 循序渐进的学习路径
- 实践技巧
- 常见错误避免
1. 核心概念
Vim 的 change 命令是编辑操作的核心,其基本格式为 c{motion},即"改变+动作"的组合。执行后会删除指定范围的内容并进入插入模式。
核心特点:
- 删除内容 + 进入插入模式
- 与删除(delete)命令的区别:change 会自动进入插入模式
- 遵循 Vim 的"动作+操作"哲学
2. 单词级操作
2.1 基础单词修改
-
cw - 改变当前单词(到空格为止) -
cW - 改变大写单词(到空格分隔为止,包含标点符号) -
ce - 改变到当前单词结尾 -
cE - 改变到大写单词结尾
2.2 精确单词操作
-
ciw - 改变单词内容(不包含周围空格) -
ciW - 改变大写单词内容(包含标点,不含空格)
💡 记忆技巧:小写
w以空格和标点为界,大写W只以空格为界
3. 括号和引号操作
3.1 内容修改(inside)
-
ci" - 改变双引号内容 -
ci' - 改变单引号内容 -
ci) - 改变圆括号内容 -
ci] - 改变方括号内容 -
ci} - 改变花括号内容 -
cit - 改变 HTML/XML 标签内容 -
ci< - 改变尖括号内容 -
cib - 改变括号块内容
3.2 包含符号修改(around)
-
ca" - 改变双引号及其内容 -
ca' - 改变单引号及其内容 -
ca) - 改变圆括号及其内容 -
ca] - 改变方括号及其内容 -
ca} - 改变花括号及其内容
💡 记忆技巧:
i表示 “inside”(内部),a表示 “around”(周围)
4. 行级操作
4.1 整行修改
-
cc - 改变整行内容(等价于S) -
S - 替换整行(等价于cc)
4.2 行内范围修改
-
C - 从当前位置改到行尾(等价于c$) -
c$ - 改变到行尾 -
c0 - 改变到行首 -
c^ - 改变到行首第一个非空白字符
5. 字符级操作
-
s - 改变当前字符并插入(等价于cl) -
cl - 改变当前字符
6. 文档级操作
-
cgg - 改变到文件开头 -
cG - 改变到文件末尾 -
c} - 改变到段落结束
7. 搜索结合操作
-
c/word - 改变到下一个 “word” 匹配处
8. 可视模式操作
-
cv - 在字符可视模式下改变选中内容 -
cV - 在行可视模式下改变选中内容 -
Ctrl-V + c - 在块可视模式下改变选中内容
9. 特殊命令
-
cA - 跳到行尾并插入(等价于A) -
cif - 改变整个函数(需要相关插件支持)
10. 命令速查表
| 命令 | 含义 | 等价形式 | 助记说明 |
|---|---|---|---|
c{motion} | 改变任意范围(通用格式) | - | change + 动作 |
cw | 改变当前单词(不含空格) | ce | change word |
cW | 改变当前大写单词(空格分隔) | - | change Word(大写 W) |
ce | 改变到当前单词结尾 | - | change to end of word |
cE | 改变到大写单词结尾 | - | change to end of Word |
ciw | 改变"当前单词"内容(不含空格) | - | change inside word |
ciW | 改变"大写单词"内容(含空格) | - | change inside Word |
ci" ci' ci) ci] ci} | 改变括号/引号内的内容 | - | change inside “…” |
ca" ca' ca) ca] ca} | 改变括号/引号及其内容 | - | change around “…” |
cit ci< | 改变标签内内容(HTML/XML) | - | change inside tag |
cib | 改变括号 block 内内容 | - | change inside block |
cif | 改变整个函数(需插件) | - | change inside function |
cc | 改变整行内容 | S | change current line |
C | 从当前位置改到行尾 | c$ | change to end of line |
c$ | 改变到行尾 | C | change $ (end of line) |
c0 | 改变到行首 | - | change to 0 (line start) |
c^ | 改变到行首第一个非空白字符 | - | change to ^ (first char) |
cA | 跳到行尾插入(等于A) | - | change append (to end) |
s | 改变当前字符并插入 | cl | substitute (char) |
S | 改变整行(插入) | cc | substitute (line) |
cl | 改变当前字符 | s | change letter |
cgg | 改变至文件开头 | - | change to gg (top) |
cG | 改变至文件末尾 | - | change to G (bottom) |
cv/cV/Ctrl-V+c | 可视模式改变选区 | - | change visual selection |
c} | 改变到段落结束 | - | change to paragraph end |
c/word | 改变到下一个word匹配处 | - | change until/word |
11. 学习建议
循序渐进的学习路径
-
第一阶段:掌握基础命令
cw、cc、C、s等常用命令- 理解 change 与 delete 的区别
-
第二阶段:理解文本对象
- 学会使用
ciw、ci"、ci)等 - 区分
inside和around的概念
- 学会使用
-
第三阶段:组合应用
- 结合动作命令使用
- 在实际编辑中形成肌肉记忆
实践技巧
- 多练习:在日常编辑中有意识地使用这些命令
- 建立联系:理解命令背后的逻辑,而不是死记硬背
- 渐进提升:从简单命令开始,逐步掌握复杂操作
常见错误避免
- 不要混淆
cw和ciw的区别 - 记住 change 命令会自动进入插入模式
- 理解大小写字母在 Vim 中的不同含义
📝 最重要的提示:change 命令执行后会自动进入插入模式,这是与删除(delete)命令的核心区别。掌握这一点,就掌握了 Vim 编辑的精髓。
