将所有内容从=替换为VIM中的行尾

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)

pb2*_*b2q 7

选择块后,使用此替换:

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)