使用通配符在vi中编辑多个文件

时间:2010-05-14 21:26:53

标签: unix shell vi wildcard

当使用程序员文本编辑器vi时,我经常使用通配符搜索对我要编辑的文件很懒惰

vi ThisIsAReallLongFi*.txt

如果匹配单个文件,则效果很好。但是,如果它匹配多个文件,则vi会做一些奇怪的事情。

首先,它打开第一个用于编辑的文件

其次,当我:wq退出文件时,我收到一条消息,终端底部看起来像这样

E173: 4 more files to edit
Hit ENTER or type command to continue

当我按Enter键时,会将我返回到我刚刚进入的文件中的编辑模式。我期望的行为是vi将转移到下一个要编辑的文件。

所以,

  1. 这里vi行为的逻辑是什么

  2. 有没有办法继续并编辑下一个匹配的文件?

  3. 是的,我知道标签完成,这个问题是基于好奇心并且想要更好地理解shell。

2 个答案:

答案 0 :(得分:40)

vi支持有多个文件可供编辑。 :n转到下一个文件,:N转到上一个文件。使用:h arglist获取更多信息。

答案 1 :(得分:7)

回答当前的问题

您可以写:vim -p myfile*,vim会将当前目录中myfile*的所有匹配项打开到多个标签中。然后,您可以逐个编辑所有文件。使用gt导航到下一个标签,然后gT导航到上一个标签。要一次性保存和退出所有文件,只需在vim中写入:wqa

回答类似问题

我遇到了类似的问题。我在当前目录的多个子目录中有一个名为“myfile *”的文件。我想编辑所有这些中的一个小变化,而不是一个接一个地打开它们。所以,在命令行中,我写了这个:

$find . -type f -name "myfile*" -exec vim -f {} \;

这样,find为每个文件运行vim。一旦我退出vim实例,find会自动运行另一个文件,直到完成所有这些文件。虽然,我同意如果所有文件都可以作为选项卡打开会更好。