开始之前在 vi 中初始化搜索

开始之前在 vi 中初始化搜索

我使用自己编写的一个小程序,该程序采用正则表达式模式作为参数并搜索 2000 多个文件。这些文件位于目录层次结构中。

该模式可以存在于多个文件中,也可以在任何文件中出现多次。找到文件名和出现模式的行后,程序调用vi+line获取第一个行号和找到的所有文件名。

现在一切都正常了,但有一次我尝试+line为每个文件指定 ( vi +2 x1 +5 x2),但这使光标位于第 5 行x1和第 1 行x2,而不是我想要的,所以我放弃了这个想法。

这些模式通常很复杂,我不想输入两次,所以我现在有时使用复制和粘贴来搜索vi.最好的是使用vi模式设置搜索历史记录,然后我可以使用/+ +Return来查找所有模式,而无需重新键入或复制/粘贴。然后我可以使用:n!转到下一个文件并继续使用该模式。

看起来该模式存储.viminfo在我的目录中。我可以在开始之前更新该文件吗vi?或者是否有一些库或命令行实用程序可以做到这一点?

答案1

无需修补该~/.viminfo文件。

在使用时,vim您可以使用+/pattern命令行选项将光标置于模式行上。之后,您可以使用n来获取以下事件(如果不在行的开头,它将是第一个事件,否则是第二个事件)。

手册页说光标将位于该模式第一次出现的位置,但根据我的经验,它位于具有该模式的行的第一个字符上。从vim man页面:

+/{pat}     For  the  first  file the cursor will be positioned on the
            first occurrence of {pat}.  See ":help search-pattern" for
            the available search patterns.

相关内容