vim中替换
- [1 : s/](#1 : s/)
在Vim中经常高频使用到的命令:
1 : s/
:s 命令的基本语法是 :[range]s/{pattern}/{string}/[flags],其中:
• [range] 是可选的范围,用于指定替换的行范围。例如,% 表示全文,10,20 表示第10 行到第20 行。
• {pattern} 是要被替换的模式(正则表达式)。
• {string} 是用于替换的字符串。
• [flags] 是可选的标志,用于控制替换的行为。例如,g 标志表示全局替换,c 标志表示替换前需要确认。
基本替换命令:
• :%s/old/new/g: 全局替换(整个文件) 将 old 替换为 new。
• :%s/old/new/gc: 全局替换并确认,每次替换前都会提示。
• 😒/old/new/: 替换当前行第一个匹配项。
• 😒/old/new/g: 替换当前行所有匹配项。
• :10,20s/old/new/g: 替换第10 行到第20 行所有匹配项。
sh
:s/demo/REPLACE/ " 替换当前行第一个'demo'
:s/demo/REPLACE/g " 替换当前行所有'demo'
:10,20s/demo/REPLACE/g " 替换第10-20行所有'demo'
:%s/demo/REPLACE/g " 替换全文所有'demo'(%表示全文)
:s/\<demo\>/REPLACE/g " 精确匹配单词'demo'(避免替换'demon'等)
:s/demo/\U&/g " 将'demo'转为大写('DEMO')
:s/demo/REPLACE/gc " 每次替换前确认:
" [y]确认, [n]跳过, [a]全部替换, [q]退出
:s/demo$123$/new\1/ 将demo123→new123
:s/demo//g 删除所有'demo'
:s/demo\_.\{-}end/REPLACE/g 替换从'demo'到'end'的多行文本
:s/demo/$USER/g 插入系统变量$USER
若替换内容含/或&,需转义为/或&;