magic选项

默认情况下,magic选项是打开的。你也可以在命令中,使用\m标记来指定使用magic模式。在启用magic选项的情况下,.*[]等字符是含有特殊意义的;而+?()、和{}则仍被视为普通字符。

如果关闭了magic选项,那么正则表达式中的许多的特殊字符就失去了神奇的魔力,而变成普通的字符。

我们使用以下只有一行的文件来测试magic选项。先用:%print命令将整个文件打印出来:

Test aaa* aa* a*

然后设置magic选项并且执行替换命令。其中,p标记打印出所改变的行:

:set magic

:1 substitute /a*/b/p

命令的执行结果如下:

bTest aaa* aa* a*

命令只是改变了一行开始的部分。因为*可以匹配0次或多次,而Test正是以0个a开始的,所有将Test替换为bTest。因为:substitute命令默认只替换第一个匹配项,所有只在行首进行了替换。如果希望替换全部匹配项,那么需要在命令末尾使用g标记。如果希望将g标记设置为默认值,那么可以使用:set gdefault命令。

我们撤销刚才的命令并再次执行替换命令:

:undo

:1 substitute /a*/b/pg

命令的执行结果如下:

bTest b*b b*b b*

如果在关闭magic选项的情况下再次执行命令:

:undo

:set nomagic

:1 substitute /a*/b/pg

命令的执行结果如下:

Test aab ab b

你可以使用以下命令,查看相关帮助文件。

:help 'magic'

smgic命令

:smagic命令,可以在执行替换命令时强制转换*等特殊字符的意义。例如我们执行以下命令:

:smagic /a*/b/pg

命令的执行结果如下:

bTest b*b b*b b*

:snomagic命令,强行关掉magic选项:

:snomagic /a*/b/pg

命令的执行结果如下:

Test aab ab b


命令小结
:set magic打开magic选项
:set nomagic关闭magic选项
:smagic强制使用magic选项
:snomagic强制禁用magic选项

Ver: 1.0<上一篇 | 目录 下一篇>