vim替换

Vim提供了多种灵活的替换命令变体,以下是主要的替换命令变体总结:

Vim替换命令的常用变体

1. 基本格式

:[range]s/{pattern}/{string}/[flags]

2. 范围(range)变体

范围表示 说明
默认当前行
. 光标所在行
1 第一行
$ 最后一行
33 第33行
'a 标记a所在行
.+1 当前行的下一行
$-1 倒数第二行
22,33 第22到33行
1,. 第1行到当前行
.,$ 当前行到最后一行
'a,'b 标记a到标记b的行
% 整个文件(等同于1,$)

3. 替换标志(flags)变体

标志 说明
只替换每行第一个匹配项
g 全局替换,替换所有匹配项
c 确认替换,替换前询问用户
i 忽略大小写
e 忽略执行过程中的错误

4. 常用替换命令变体

全文替换

  • :%s/pattern/string/g:全文替换所有匹配项
  • :g/pattern/s//string/g:等同于上一个命令
  • :%s/pattern/string/gc:替换前确认
  • :%s/pattern/string/gi:不区分大小写替换

当前行替换

  • :s/pattern/string/g:当前行所有匹配项
  • :.s/pattern/string/g:当前行所有匹配项

指定行范围替换

  • :n,m s/pattern/string/g:第n行到m行
  • :1,10 s/pattern/string/g:第1到10行
  • :.,$ s/pattern/string/g:当前行到文件末尾
  • :%s/pattern/string/g:全文替换(等同于1,$

使用其他分隔符

  • :s#pattern#string#g:使用#作为分隔符(避免/冲突)
  • :%s+pattern+string+g:使用+作为分隔符
  • :s@pattern@string@g:使用@作为分隔符

5. 特殊替换场景

行首/行尾替换

  • :%s/^/prefix/:在每行开头添加前缀
  • :%s/$/suffix/:在每行结尾添加后缀
  • :%s/ *$//:删除行尾空格

精确匹配单词

  • :%s/\<pattern\>/string/g:精确匹配单词(避免匹配部分匹配)

删除Windows换行符

  • :%s/^V^M//g:在Vim中删除^M(实际输入时需用Ctrl+V+Ctrl+M)

6. 其他相关命令

  • r:替换光标所在字符(单个字符替换,无需进入插入模式)
  • R:进入替换模式,可连续替换多个字符
  • c:修改命令(进入插入模式,与替换不同)

示例

  1. 全文替换"Vim"为"vim"并确认

    :%s/Vim/vim/gc
    
  2. 将当前行的"line"替换为"lines"

    :s/line/lines/g
    
  3. 将第2行到第10行的"line"替换为"lines"

    :2,10s/line/lines/g
    
  4. 在行首添加注释符号

    :%s/^/\/\/ /g
    
  5. 使用#作为分隔符避免/冲突

    :s#vivian/#sky/#g
    

这些替换命令变体使Vim成为强大的文本处理工具,能够高效地进行批量文本修改。

posted @ 2026-01-16 17:30  庶旁  阅读(2)  评论(0)    收藏  举报