我是一名有用的助手,可以为您翻译文本。
我正在尝试编写一个 Vimscript 脚本来重构一些旧代码。
大致上,我有很多这种格式的文件。
使用这个正则表达式
我正在尝试编写一个 Vimscript 脚本来重构一些旧代码。
大致上,我有很多这种格式的文件。
$this['foo'] = array();
{
$this['foo']['id'] = 123;
$this['foo']['name'] = 'name here';
$this['foo']['name2'] = 'name here2';
$this['foo']['name3'] = 'name here3';
}
我想重新格式化这个
$this['foo'] = array(
'id' => 123;
'name' 'name here';
'name2' 'name here';
'name3' 'name here';
);
其中foo是变量。
我正在尝试匹配
$this['foo'] = array()
{
使用这个正则表达式
/\zs\$this\[.*\]\ze = array()\_s{;
所以我可以执行这段代码
# move cursor down two lines, visual select the contents of the block { }
jjvi{
# use variable, parent_array to replace
s/\= parent_array . '\[\([^=]\+\)] = \(.*\);'/'\1' => \2,
当然,我需要让parent_array = /\zs$this[(.*)]\ze = array(); ,但是这显然不是正确的语法...
简而言之:
function Refactor()
# what is the proper syntax to do this assignment ?
let parent_array = /\zs\$this\[.*\]\ze = array()\_s{;
if (parent_array)
jjvi{
'<,'>s/\= parent_array . '\[\([^=]\+\)] = \(.*\);'/'\1' => \2,
endif
endfunction
编辑* 根据评论者FDinoff的建议进行了转义
$
,[
和]
。 - FDinoff