在 vim 中找到并突出显示的模式时显示“未找到模式”消息

在 vim 中找到并突出显示的模式时显示“未找到模式”消息

我有相当数量的 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/'应该可以工作。

相关内容