我有相当数量的 PHP 类源文件,我可以使用命令列出grep -r "class " *
每个包含class <MyClass>
模式的文件。
例如,其中一个文件包含:
<?php
class NavlinkItem {
var $id;
var $name;
var $description;
var $image;
var $imageOver;
var $url;
var $blankTarget;
var $language;
var $templateModelId;
var $navlinkId;
function NavlinkItem($id = '') {
}
我想function NavlinkItem
用图案代替function __construct
图案。
该NavlinkItem
模式可以从源文件的实际名称中得出system/navlink/NavlinkItem.php
,我可以使用expand('%:t:r')
我可以将NavlinkItem
模式存储在a
寄存器中let @a = expand('%:t:r')
我想对该寄存器的内容进行替换:
execute 's/function ' . getreg('a') . '/function __construct/'
由于该模式以黄色突出显示,因此似乎已经找到。
但命令仍然错误并显示E486: Pattern not found: function NavlinkItem
消息。
答案1
如果需要搜索整个文档而不是仅搜索当前行,则需要%
在正则表达式的开头使用符号。
所以execute '%s/function ' . getreg('a') . '/function __construct/'
应该可以工作。