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表示宏的名称。

posted @ 2024-04-01 11:07  flxx  阅读(1303)  评论(0编辑  收藏  举报