shell globbing 使用 vim 打开所有文件未按预期工作

shell globbing 使用 vim 打开所有文件未按预期工作

我正在尝试使用 vim 打开并编辑一系列文件。我预期的行为是 vim 打开一个文件,我编辑它,输入:wq,vim 关闭并保存该文件,然后立即打开下一个文件供我开始编辑。

我做了一些谷歌搜索,然后一些 结果vim *提供了or的解决方案vim pattern*,并对标准 unix shell 文件通配语法进行了变体。

然而,当我在我的系统上尝试这个时,我得到了意想不到的行为。在我编辑 和 后:wq,vim 似乎再次打开相同的第一个文件(带有保存的更改),然后另一个:wq将我转储回命令行。没有打开其他文件进行编辑

编辑我尝试了两种方法来转义星号,以防某些东西无法正确读取全局

$ vim webform.webform.\*

$ vim "webform.webform.*"

然而,这两种语法都给了我一个 vim 屏幕,它正在编辑一个带有文字名称的新文件webform.webform.*

这是我最初尝试的,但出现了意想不到的行为:

$ vim webform.webform.*

Vim 打开第一个文件:

...   ...
100   draft_pending_multiple_message: ''
101   confirmation_type: page
102   confirmation_title: ''
103   confirmation_message: ''
"webform.webform.my_webform.yml" 184L, 8621C

我编辑文件,保存并关闭它:

:wq

Vim 注意到更改已写入,指示还有多少文件需要编辑,出于某种原因希望我按 Enter 键:

"webform.webform.my_webform.yml" 184L, 8621C written
E173: 130 more files to edit
Press ENTER or type command to continue 

然后它再次打开刚刚打开的第一个文件。

100   draft_pending_multiple_message: ''
101   confirmation_type: page
102   confirmation_title: ''
103   confirmation_message: ''
                            1,1           Top

我保存并关闭:

:wq

现在我回到了 bash 提示符,vim 中没有打开任何其他文件。

$

我想打开一个文件,编辑它,保存它,关闭它,然后编辑下一个文件。我究竟做错了什么?

$ bash --version
GNU bash, version 4.4.12(1)-release (x86_64-pc-linux-gnu)

$ vim --version
VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Jun 21 2019 04:10:35)
...

$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
...

答案1

问题不在于通配符。每个文件都是在缓冲区中打开的,并且不能使用:wq退出缓冲区。您可以用来:w|bd保存当前缓冲区并卸载它。但我觉得它很笨拙。更好的方法是-p在调用 Vim 时添加该标志:

vim -p webform.webform.*

这会导致每个文件在新选项卡中打开,然后您可以使用:wq(或:x)保存文件并关闭选项卡。

答案2

根据 icarus 的评论,使用:wn, writethen next, 而不是:wq让我得到所需的行为,而且我不必在 vim 中输入两个单独的命令。

相关内容