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.)