Linux 如何从命令行在多个gvim文件中搜索单个单词?

Linux 如何从命令行在多个gvim文件中搜索单个单词?,linux,unix,vim,Linux,Unix,Vim,我想在不同的选项卡中打开多个文件,并在所有选项卡中搜索同一个单词。然后我想跳转到每个文件中找到的单词的第一个匹配项 这样做是可行的,但不会跳转到第一个事件: gvim -p -cmd "/word" file1 file2 file3 file4 file5 file6 file7 我需要手动按“n”转到下一场比赛 Vim没有为命令行上的每个文件提供执行命令的方法。-c选项导致在读取第一个文件后执行命令,--cmd发生在打开任何文件之前 如果要执行此操作,可能需要定义一个脚本,该脚本具有执行此

我想在不同的选项卡中打开多个文件,并在所有选项卡中搜索同一个单词。然后我想跳转到每个文件中找到的单词的第一个匹配项

这样做是可行的,但不会跳转到第一个事件:

gvim -p -cmd "/word" file1 file2 file3 file4 file5 file6 file7

我需要手动按“n”转到下一场比赛

Vim没有为命令行上的每个文件提供执行命令的方法。
-c
选项导致在读取第一个文件后执行命令,
--cmd
发生在打开任何文件之前

如果要执行此操作,可能需要定义一个脚本,该脚本具有执行此操作的函数(例如,
搜索
),使用
-S
加载脚本,然后使用
--remote send
选项执行脚本。在许多系统上,
gvim
在默认情况下以默认服务器名启动,但如果没有,则需要在初始进程中使用
--servername


或者,您可以使用
grep
从命令行执行此操作,这将更加灵活,但当然不会出现在编辑器中。

由于您在单独的选项卡页面中打开文件,因此可以使用在每个页面中执行搜索

如果可以直接转到第一个匹配的行,您可以通过
:/

vim -p -c 'tabdo /word/' file1 file2 file3 file4 file5 file6 file7
要转到行中第一个匹配的开头,我们需要这样的内容,使用正常模式
n

vim -p -c "/word" -c 'tabdo 1normal! n' file1 file2 file3 file4 file5 file6 file7

您可能对填充快速修复列表的
:grep
:vimgrep
感兴趣:

$ gvim file*
:vimgrep /pattern/ ##
##
意味着搜索参数列表,您可以使用
:args
查看该列表。这是
:next
:prev
使用的内容

现在,您可以使用
:cnext
:cprev
导航搜索;或者,您可以打开quickfix窗口
:copen
,并在任意一行中按enter键


您仍然可以使用
:cfdo tabedit
弹出打开选项卡中的所有文件,但此时可能没有必要

“>c选项导致在读取第一个文件后执行命令…”但命令可以是
argdo
bufdo
。我经常运行
vim-c“set nomore”-c“argdo%s/search/replace/”-c xa