样本:
function foobar($arg1 = null, $arg2 = null) {
$_a = $arg1;
$_b = $arg2;
}
我想在 vim 中编写一个搜索和替换正则表达式来执行此操作:
function foobar($arg1 = null, $arg2 = null) {
$_a = (!$arg1) ? $arg1 : 1;
$_b = (!$arg2) ? $arg2 : 1;
}
这是我迄今为止尝试过的:
- 使用
.
命令重复我在 vim 中的最后一个操作,但它只附加: 1;
到行 - 我已经编写了这个正则表达式的几十个变体,但无法按预期工作:
%s/\$_a\t=\t*/(!\$arg1)\t\?\t\2\t\:\t1/g
- 手动替换这些行,但不用说我必须对大量文件执行此操作。
基本上我想做的是编写一个匹配的正则表达式,
$arg1
然后用三元运算符将匹配项括起来,但我无法在vim中访问正则表达式匹配项。
任何帮助将不胜感激!
(不必在 vim 中完成,我愿意接受使用 perl 之类的建议)
谢谢!!