Vim替换
1. 普通替换命令:s///
在Vim中,最常用的替换命令是s///,其中s表示替换,三个斜杠代表分隔符。分隔符可以是任意字符,如s@@@、s###等,只要保证三个分隔符相同即可。基本格式如下:
{作用范围}s/{目标}/{替换}/{替换标志}
- 作用范围:可以是单个字符(如g表示全局替换),也可以是行范围(如1,5表示第1到第5行)。
- 目标:需要替换的文本。
- 替换:用于替换目标的文本。
- 替换标志:控制替换行为的标志,如g表示全局替换,c表示需要确认等。
例如,将全文中的"old"替换为"new":
:%s/old/new/g
作用范围:
1. **全局替换**:要在整个文件中执行替换,可以使用全局标识符 `%` 。例如,执行全局替换命令: `:%s/old/new/g` ,将文件中所有的"old"替换为"new"。
2. **当前行替换**:要在当前行执行替换,可以使用 `.`或者直接使用 。例如,执行当前行替换命令: `:s/old/new/g`或者`:.s/old/new/g` ,将当前行中所有的"old"替换为"new"。
3. **指定行范围替换**:要在指定范围的行执行替换,可以使用行号范围。例如,执行从第5行到第10行的替换命令: `:5,10s/old/new/g` ,将第5行到第10行中所有的"old"替换为"new"。
4. **可视模式下选择范围**:在可视模式下选择文本后,按下 `:` 键就会自动在命令行中输入 `'<,'>` ,表示当前选定的文本范围。然后输入替换命令,例如 `:s/old/new/g` ,将会在选定的文本范围内执行替换操作。
替换标志
1. **全局替换标志 `g` **:默认情况下,Vim只会替换每行的第一个匹配项。如果你想替换每行的所有匹配项,可以在替换命令末尾添加 `g` 标志。例如, `:s/old/new/g` 会替换每行中所有的"old"。
2. **确认替换标志 `c` **:如果你想逐个确认是否替换每个匹配项,可以在替换命令末尾添加 `c` 标志。例如, `:s/old/new/gc` 会在替换每个匹配项之前提示你确认替换。
3. **忽略大小写标志 `i` **:如果你想进行不区分大小写的替换,可以在替换命令末尾添加 `i` 标志。例如, `:s/old/new/gi` 会忽略大小写进行替换。
4. **只替换整个单词标志 `w` **:如果你只想替换整个单词而不是部分匹配,可以在替换命令末尾添加 `w` 标志。例如, `:s/\<old\>/new/g` 会替换整个单词"old"。
2. 查找替换命令:substitute()
Vim还提供了一个功能更强大的替换命令:substitute(),它可以在脚本中对文本进行替换。基本格式如下:
:call substitute({作用范围}, {目标}, {替换}, {替换标志})
作用范围、目标、替换和替换标志的含义与s///命令相同。例如,将第1到第5行中的"old"替换为"new":
:call substitute('1,5', 'old', 'new', 'g')
3. 使用寄存器进行替换
Vim中的寄存器可以将文本保存起来,以便在其他地方使用。我们可以将需要替换的文本保存到一个寄存器中,然后在另一个位置替换。使用寄存器进行替换的基本步骤如下:
(1)将需要替换的文本复制到寄存器中:
"ayw
其中,a表示寄存器名称,y表示复制,w表示单词。
(2)将光标移动到需要替换的位置,然后使用寄存器中的文本进行替换:
"ap
其中,a表示寄存器名称,p表示粘贴。
4. 使用宏进行替换
Vim中的宏可以将一系列操作录制下来,然后在其他地方播放。我们可以录制一个替换操作的宏,然后在需要替换的地方播放。使用宏进行替换的基本步骤如下:
(1)录制宏:
qa
其中,q表示开始录制宏,a表示宏的名称。
(2)执行替换操作,如:
:%s/old/new/g
(3)结束录制宏:
q
(4)将光标移动到需要替换的位置,然后播放宏:
@a
其中,@表示播放宏,a表示宏的名称。
本文来自博客园,作者:flxx,转载请注明原文链接:https://www.cnblogs.com/faithlocus/p/18108001
浙公网安备 33010602011771号