代码之家  ›  专栏  ›  技术社区  ›  Alana Storm

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

  •  26
  • Alana Storm  · 技术社区  · 14 年前

    当使用程序员文本编辑器vi时,我经常使用通配符搜索来懒惰地处理要编辑的文件。

    vi ThisIsAReallLongFi*.txt
    

    当它与一个文件匹配时,效果很好。但是,如果它匹配多个文件,那么vi会做一些奇怪的事情。

    首先,它打开第一个文件进行编辑

    第二,当我:wq从文件中取出时,我得到一条消息,在终端的底部,看起来像这样

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

    当我按回车键时, 它使我返回到刚才所在文件的编辑模式 . 我在这里期望的行为是vi将转到下一个要编辑的文件。

    所以,

    1. 维的行为背后的逻辑是什么?

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

    是的,我知道标签的完成,这个问题是基于好奇心和想更好地理解外壳。

    2 回复  |  直到 7 年前
        1
  •  39
  •   Ignacio Vazquez-Abrams    14 年前

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

        2
  •  7
  •   JETM    8 年前

    回答当前问题

    你可以写: vim -p myfile* 维姆会打开所有的比赛 myfile* 在当前目录的多个选项卡中。然后,您可以逐个编辑所有文件。使用导航 gt 转到下一个选项卡 gT 用于转到上一个选项卡。为了一次性保存和退出所有文件,只需写入 :wqa 在VIM内部。

    类似问题的答案

    我也面临同样的问题。我在当前目录的多个子目录中有一个名为“my file*”的文件。我想在不逐一打开它们的情况下,编辑所有它们中的一个小变化。所以,在命令行中,我写了:

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

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