vim global 命令
对匹配模式的所有行执行命令,批量操作利器
语法
:[range]g/pattern/command
参数
| 参数 | 说明 | 示例 | 级别 |
|---|---|---|---|
:g/pattern/d |
删除所有匹配行 | :g/console.log/d |
常用 |
:g/pattern/normal cmd |
对匹配行执行 Normal 命令 | :g/TODO/normal dd |
进阶 |
:v/pattern/d |
删除所有不匹配的行 | :v/error/d |
进阶 |
:g/pattern/m$ |
将匹配行移到文件末尾 | :g/import/m0 |
进阶 |
:g/^$/d |
删除所有空行 | :g/^$/d |
常用 |
示例
删除所有 console.log
:g/console\.log/d
清理调试代码
删除所有空行
:g/^$/d
只保留含 error 的行
:v/error/d
v 是 g 的反向操作
给所有 TODO 行添加标记
:g/TODO/normal A // FIXME
在匹配行末尾追加文本
常见错误
E147: Cannot do :global recursive
global 命令中不能嵌套 global,改用其他方式
技巧
- :g 配合 :t(复制行)和 :m(移动行)非常强大
- :g/pattern/y A 可以把所有匹配行追加复制到寄存器 a
- 先用 :g/pattern/ 不加命令预览匹配行