Cod*_*ack 2 vim replace substitution
假设我有几行:
$repeat_on = $_REQUEST['repeat_on'];
$opt_days = $_REQUEST['opt_day'];
$opt_days = explode(",", $opt_days);
Run Code Online (Sandbox Code Playgroud)
... 等等.
假设我使用可视模式选择所有行:如何将所有行替换=为行的末尾,使其看起来像:
$repeat_on = NULL;
$opt_days = NULL;
$opt_days = NULL;
Run Code Online (Sandbox Code Playgroud)
选择块后,使用此替换:
s/=.*$/= NULL;
Run Code Online (Sandbox Code Playgroud)
替换正则表达式通过替换行之间=的任何内容来更改每一行,包括=with = NULL;.
命令的第一部分是匹配要替换的正则表达式:=.*$.
=是字面意思..表示任何字符..*意味着:0或更多的任何角色.$对行结束,但其实这是没有必要在这里:尝试也没有$.因此正则表达式将匹配=每行中第一个之后的区域,并用替换替换该区域,即= NULL;.我们需要=在替换中加入以将其添加回来,因为它是要替换的比赛的一部分.
当您选择了一个块,然后点击:输入命令时,命令行将自动添加一个视觉选择范围,如下所示:
:'<,'>
Run Code Online (Sandbox Code Playgroud)
继续键入上面的命令,您的命令行将是:
:'<,'>s/=.*$/= NULL;
Run Code Online (Sandbox Code Playgroud)
这将替换应用于选定的可视块.
如果您需要在一行上进行多次替换,则需要添加g标记:
:'<,'>s/=.*$/= NULL;/g
Run Code Online (Sandbox Code Playgroud)