假设我有几行,例如:
$repeat_on = $_REQUEST['repeat_on'];
$opt_days = $_REQUEST['opt_day'];
$opt_days = explode(",", $opt_days);
... 等等。
假设我使用可视模式选择所有行:如何替换从=
行尾到行尾的所有内容,如下所示:
$repeat_on = NULL;
$opt_days = NULL;
$opt_days = NULL;
假设我有几行,例如:
$repeat_on = $_REQUEST['repeat_on'];
$opt_days = $_REQUEST['opt_day'];
$opt_days = explode(",", $opt_days);
... 等等。
假设我使用可视模式选择所有行:如何替换从=
行尾到行尾的所有内容,如下所示:
$repeat_on = NULL;
$opt_days = NULL;
$opt_days = NULL;
选择块后,使用此替代项:
s/=.*$/= NULL;
=
替换正则表达式通过将行之间和行尾之间的任何内容(包括 , =
)替换为 来更改每一行= NULL;
。
命令的第一部分是匹配要替换的正则表达式:=.*$
.
=
是从字面上理解的。.
表示任何字符。.*
意味着:0 个或多个任意字符。$
for end of line终止,但这实际上在这里不是必需的:也可以不带$
.因此,正则表达式将匹配=
每行中第一个之后的区域,并将该区域替换为替换区域,即= NULL;
. 我们需要=
在替换中包含 以将其添加回来,因为它是要替换的匹配的一部分。
当您选择了一个块并点击:
输入命令时,命令行将自动以如下所示的视觉选择范围为前缀:
:'<,'>
继续输入上面的命令,你的命令行将是:
:'<,'>s/=.*$/= NULL;
这会将替换应用到选定的视觉块。
如果您需要在一行中有多个替换,则需要添加g
标志:
:'<,'>s/=.*$/= NULL;/g
一些替代方案:
在第一行/字符做...Wl<C-v>jjCNULL;<Esc>bi<Space><Esc>
在第一行/字符做...qqWllCNULL;<esc>+q2@q
在第一行做...3:no<S-tab> WllCNULL;<Enter>
或者,如果您在视觉上选择了这些行,则将 3 留在开头。