0%

vim 中的替换功能

常用用法

%s/old/new/g
%s/old/new/gc
%s/\<old\>/new/gc
  • % 所有行
  • g 所有匹配
  • c 替换前确认
  • <> 确认单词边界,需要使用转义符\

正则表达式

%s/\([^,]*\),\(.*\)/New\1/gc
  • () 用于反向引用
  • [^,] 匹配除,之外
  • * 任意多次
  • . 任意字符
  • \1 反向引用,表示第一个()匹配的内容

多文件修改

args & argdo

需要替换当前目录下所有的.c文件中的OldNew

:args *.c
:args **/*.c
:args */*.c

:argdo %s/Old/New/gc | update
  • *.c 当前目录下的所有.c
  • **/*.c 递归扫描所有下级目录
  • */*.c 只扫描下一级目录(即不扫描当前目录)
  • update 直接更新写入硬盘

使用宏

录制 宏命令

qa
:%s/\<Old\>/New/g
:wnext
q

使用 宏定义

100@a

Tips

删除多余空格

%s/\s\+$//

删除Windows文本文件中的 “^M” 标记

%s/\r//g