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

Ala*_*orm 28 unix vi shell wildcard

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

vi ThisIsAReallLongFi*.txt
Run Code Online (Sandbox Code Playgroud)

当这匹配单个文件时,它工作得很好.但是,如果它匹配多个文件vi做了一些奇怪的事情.

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

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

E173: 4 more files to edit
Hit ENTER or type command to continue
Run Code Online (Sandbox Code Playgroud)

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

所以,

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

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

是的,我知道标签完成,这个问题是基于好奇心,并希望更好地理解shell.

Ign*_*ams 42

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

  • 另一个十年的老神秘解决了.谢谢! (2认同)

Abh*_*nav 7

回答当前的问题

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

回答一个类似的问题

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

$find . -type f -name "myfile*" -exec vim -f {} \;
Run Code Online (Sandbox Code Playgroud)

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

  • 此外,由于最大打开标签数为**10**,通过在`〜/ .vimrc`中设置自定义`tabpagemax`可以方便地增加限制.见[link](https://www.linux.com/learn/tutorials/442422-vim-tips-using-tabs) (3认同)