循环执行vim

循环执行vim

我正在编写一个脚本,它可以让用户编辑多个文件。我正在尝试启动vim每个文件。

我尝试将文件名放入数组中,并迭代数组的每个元素,并在每次迭代中启动 vim。但这仅vim针对第一个元素启动,并且脚本停止。我怎样才能实现我的目标?

答案1

如果您想在循环内运行交互式内容,则需要使用与标准输入不同的文件描述。

#!/bin/bash

while read -r file <&3; do

  vim "$file" || break

done 3< <(find . -type f)

或者,使用空字节分隔符来支持不常见的文件名:

#!/bin/bash

while IFS= read -r -d '' file <&3; do

  vim -- "$file" || break

done 3< <(find . -type f -print0)

的输出find借助进程替换被馈送到文件描述符 3,然后被馈送到readthrough <&3

/编辑:根据评论中沃尔夫的建议。

答案2

对我来说这有效:

#!/bin/sh

for f in *.txt
do
    vim "$f"
done

它为每个文件打开一个 vim,并在关闭前一个文件后打开下一个文件。

相关内容