【vim 中如何替换】

「vim 中如何替换」


1. 最常用的几条命令

在 Vim 里,替换命令的基本格式是:

vim 复制代码
:[范围]s/原内容/新内容/[标志]

1) 当前行替换

vim 复制代码
:s/foo/bar/      " 当前行,将第一个 foo 换成 bar
:s/foo/bar/g     " 当前行,将所有 foo 换成 bar

2) 整个文件替换

vim 复制代码
:%s/foo/bar/g    " 全文所有 foo 换成 bar
:%s/foo/bar/gc   " 全文替换,逐个确认(y 是替换,n 跳过)

3) 指定行范围替换

vim 复制代码
:3,10s/foo/bar/g   " 第 3 行到第 10 行之间替换
:.,$s/foo/bar/g    " 当前行到文件末尾替换
:.,+4s/foo/bar/g   " 当前行和之后 4 行里替换

2. 常用标志说明

放在命令最后的 /[标志] 部分:

标志 含义 示例
g 一行中全部匹配 :%s/foo/bar/g
c 每次替换前确认 :%s/foo/bar/gc
i 忽略大小写 :%s/foo/bar/gi
I 强制大小写敏感 :%s/foo/bar/gI
e 没有匹配不报错 :%s/foo/bar/ge

3. 只替换完整单词(不替换子串)

比如只想把独立单词 foo 换成 bar,而不影响 foobar

vim 复制代码
:%s/\<foo\>/bar/g
  • \< 表示单词开始
  • \> 表示单词结束

4. 一些非常实用的小技巧

1) 替换前确认

vim 复制代码
:%s/foo/bar/gc

每个匹配都会问你:replace with bar (y/n/a/q/l/^E/^Y)?

  • y:替换当前
  • n:跳过当前
  • a:替换后面全部
  • q:退出
  • l:只替换这一处后退出

2) 在可视选区内替换

  1. 在普通模式按 Vv 选中一段文本

  2. :,命令行会自动出现 :'<,'>

  3. 输入替换命令,例如:

    vim 复制代码
    :'<,'>s/foo/bar/g

只会在选中的区域里替换。

3) 删除匹配的文本

vim 复制代码
:%s/foo//g     " 删除全文中所有 foo
:s/foo//g      " 删除当前行所有 foo

4) 去掉多余空格(典型格式化操作)

vim 复制代码
:%s/\s\+/ /g       " 多个空白变成一个空格
:%s/\s\+$//e       " 删除每行行尾空白

5. 最小速查表

vim 复制代码
:s/a/b/          " 当前行第一个 a -> b
:s/a/b/g         " 当前行所有 a -> b
:%s/a/b/g        " 全文所有 a -> b
:%s/a/b/gc       " 全文替换,逐个确认
:3,10s/a/b/g     " 第 3~10 行的 a -> b
:%s/\<a\>/b/g    " 只替换独立单词 a -> b
相关推荐
冬奇Lab2 小时前
一天一个开源项目(第14篇):CC Workflow Studio - 可视化AI工作流编辑器,让AI自动化更简单
人工智能·开源·编辑器
承渊政道4 小时前
Linux系统学习【Linux基础开发工具】
linux·运维·笔记·学习·centos·编辑器
学嵌入式的小杨同学13 小时前
【Linux 封神之路】信号编程全解析:从信号基础到 MP3 播放器实战(含核心 API 与避坑指南)
java·linux·c语言·开发语言·vscode·vim·ux
Hello World . .18 小时前
Linux:软件编程
linux·运维·服务器·vim
徐小夕@趣谈前端19 小时前
Web文档的“Office时刻“:jitword共建版2.0发布!让浏览器变成本地生产力
前端·数据结构·vue.js·算法·开源·编辑器·es6
zhanglianzhao1 天前
Win 11 WSL 配置Claude code 并在VsCode中使用
ide·vscode·编辑器·claude·cladue code
Keying,,,,1 天前
VScode中终端闪退问题
ide·vscode·编辑器
热爱生活的五柒1 天前
如何在vscode中使用Claude code以及插件中配置setting.json无效的解决方法
ide·vscode·编辑器
ONLYOFFICE1 天前
ONLYOFFICE 自动化工具:宏和 AI 函数如何选择?
运维·自动化·编辑器·onlyoffice
曹牧1 天前
Excel:筛选两列中不匹配项
excel