如何使用vim打开目录下的每个.txt文件(使用Bash)

Ric*_*ard 5 vim bash while-loop

我正在尝试以下方法来使用a vim来打开txt当前目录下的每个文件.

find . -name "*.txt" -print | while read aline; do
  read -p "start spellchecking fine: $aline" sth
  vim $aline
done
Run Code Online (Sandbox Code Playgroud)

bash抱怨中运行它

Vim: Warning: Input is not from a terminal
Vim: Error reading input, exiting...
Vim: Finished.
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释可能出错的地方吗?另外,我打算read -p在使用vim之前使用提示,但没有成功.

Wil*_*ell 11

尝试:

vim $( find . -name "*.txt" )
Run Code Online (Sandbox Code Playgroud)

要修复您的解决方案,您可以(可能)执行以下操作:

find . -name "*.txt" -print | while read aline; do
      read -p "start spellchecking fine: $aline" sth < /dev/tty
      vim $aline < /dev/tty
done
Run Code Online (Sandbox Code Playgroud)

问题是整个while循环从find获取其输入,并且vim继承该管道作为其stdin.这是一种让vim输入来自终端的技术.(但并非所有系统都支持/dev/tty.)