我用来grep -e Peugeot -e PeuGeot carlist.txt
搜索 carlist.txt 并取出一些项目,我认为这grep -e Peugeot -e PeuGeot carlist.txt | vi
会为我通过管道,但这就是我得到的:
Vim: Warning: Input is not from a terminal
Vim: Error reading input, exiting...
Vim: preserving files...
Vim: Finished.
答案1
使用“-”作为参数运行 vi 或 vim 会使其从标准输入读取要编辑的文件。因此:
grep -e Peugeot -e PeuGeot carlist.txt | vi -
会做你需要的。
答案2
除此之外vim -
,您还可以使用以下语法使用进程替换<(command)
,例如:
vim <(echo This is example.)
vim <(cat /etc/hosts)
也可以看看:
答案3
你应该使用输出重定向:
grep ... > newfile.txt && vi newfile.txt
另外,我认为你的grep
可以改进:
grep 'Peu[gG]eot' carlist.txt > newfile.txt && vi newfile.txt
答案4
在~/bin/r
:
#!/bin/sh
[ $# -eq 0 ] && set -- -;
exec vi -R "$@"
在~/.vimrc
:
: au StdinReadPost * set buftype=nofile
然后:
ls |r
grep -e Peugeot -e PeuGeot carlist.txt | r
我有
r- () { "$@" | r; }
在我的~/.bashrc,
所以
r- ls -l