vim - 在 VIM 中替换从 = 到行尾的所有内容

标签 vim replace substitution

假设我有几行:

$repeat_on =  $_REQUEST['repeat_on'];    
$opt_days = $_REQUEST['opt_day'];  
$opt_days = explode(",", $opt_days);

...等等。

假设我使用可视化模式选择所有行:如何替换从 = 到行尾的所有内容,使其看起来像:

$repeat_on = NULL;    
$opt_days =  NULL;
$opt_days =  NULL;

最佳答案

选择 block 后,使用此替代品:

s/=.*$/= NULL;

替换正则表达式通过将 = 和行尾之间的任何内容(包括 =)替换为 = NULL; 来更改每一行.

命令的第一部分是与要替换的内容匹配的正则表达式:=.*$

  • = 是字面意思。
  • . 表示任何字符
  • 因此 .* 表示:0 个或多个任意字符
  • 这由$ 终止行尾,但实际上这里没有必要:也可以在没有$ 的情况下尝试。

因此正则表达式将匹配每行中第一个 = 之后的区域,并用替换项替换该区域,即 = NULL;。我们需要在替换中包含 = 以将其添加回来,因为它是要替换的匹配项的一部分。

当您选择了一个 block ,然后点击 : 以输入命令时,命令行将自动为视觉选择范围添加前缀,如下所示:

:'<,'>

继续输入上面的命令,你的命令行将是:

:'<,'>s/=.*$/= NULL;

这会将替换应用到选定的可视 block 。

如果您需要在一行中进行多次替换,则需要添加 g 标志:

:'<,'>s/=.*$/= NULL;/g

关于vim - 在 VIM 中替换从 = 到行尾的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12845307/

相关文章:

vim - 在 Vim 中,如何将宏应用于一组行?

vim - 在 Vim 中为 :make, :grep, 等的输出着色

c++ - 将 c++11 正确添加到 Syntastic

java - 关于 String.replaceAll() 和 String.replaceFirst() 方法的问题

python - python 中的字符串替换 - % : 'list' and 'str' 不支持的操作数类型

regex - 替换期间的Vim增量搜索

php - 如何在 PHP 中用空字符串替换 ?myuser=number

c++ - 将带双引号的字符串替换为带双引号的字符串

python - 用sympy缓慢替换符号矩阵

jsp - 在 Tomcat 网络应用程序中参数化 "static"内容(例如 CSS)的好方法是什么?