我使用自己编写的一个小程序,该程序采用正则表达式模式作为参数并搜索 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.