ova*_*g25 2 unix vim shell perl
我试图使用此命令从命令行打开vim中的多个文件.出于某种原因,我会得到一个错误,你将在下面看到.
$ find . -name edit.html.erb \
| perl -pi -e 's/^..//' \
| perl -pi -e 's/\n$/ /' \
| vim
Run Code Online (Sandbox Code Playgroud)
当我在没有"| vim"的情况下运行它时,如以下命令:
$ find . -name edit.html.erb \
| perl -pi -e 's/^..//' \
| perl -pi -e 's/\n$/ /'
Run Code Online (Sandbox Code Playgroud)
得到这个输出:
addresses/edit.html.erb claims/edit.html.erb emails/edit.html.erb owners/edit.html.erb packages/edit.html.erb users/edit.html.erb vessels/edit.html.erb voyages/edit.html.erb %
Run Code Online (Sandbox Code Playgroud)
我得到一个错误,可能与输出结尾处的"%"标记有关.
这是输出和错误:
Vim: Warning: Input is not from a terminal
Vim: Error reading input, exiting...
Vim: preserving files...
Vim: Finished.
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?不知道哪个部分导致错误,因为我是一个新手,但任何帮助将不胜感激!
您将文件的内容作为键盘输入传递.我认为你想要做的是vim打开文件启动.我不知道vim,但通常通过将文件名作为参数传递来实现.
在bash中,人们可以使用:
vim $( find . -name edit.html.erb | perl -pe's/^..//' | perl -pe's/\n$/ /' )
Run Code Online (Sandbox Code Playgroud)
(删除了无意义的使用-i.)
实际上,将换行更改为空格是没用的,删除前导也是如此./,所以您只需要:
vim $( find . -name edit.html.erb )
Run Code Online (Sandbox Code Playgroud)