wey*_*amz 21
我认为:w !tee
会很完美,
jab*_*ali 20
由于您使用Linux/Unix,您可能也有兴趣尝试更多的用户.它提供了一个名为vipe
,可以读取的命令stdin
,允许您编辑文本$EDITOR
,然后将修改后的文本打印到stdout
.
因此,请确保将编辑器设置为Vim:
export EDITOR=vim
Run Code Online (Sandbox Code Playgroud)
然后你可以试试这些例子:
cat /etc/fstab | vipe
cut -d' ' -f2 /etc/mtab | vipe | less
Run Code Online (Sandbox Code Playgroud)
从stdin读取:
echo "hey" | vim -
Run Code Online (Sandbox Code Playgroud)
如果你:w
还需要给它一个文件名.
使用vim
它们的程序EDITOR
,比如crontab -e
传递一个文件名,以便用户可以:x
而不用担心文件名.
编辑
你也可以这样做:
mkfifo /tmp/some_pipe
echo "hey" > /tmp/some_pipe ; cat /tmp/some_pipe
Run Code Online (Sandbox Code Playgroud)
并从另一个过程(或终端)
vim /tmp/some_pipe
Run Code Online (Sandbox Code Playgroud)
请注意,写入管道将阻塞,直到从中读取内容,并且读取将阻止直到写入内容,因此使用常规文件可能更安全.
要将缓冲区打印到shell标准输出,vim
需要在Ex模式下启动,否则它将使用自己的窗口打开"正常"方式并在退出时清除任何输出缓冲区.
这是最简单的工作示例:
$ echo foo | vim -es '+%print' '+:q!' /dev/stdin
foo
Run Code Online (Sandbox Code Playgroud)
需要指定标准输入的特殊文件描述符(/dev/stdin
)以防止额外烦人的消息.
这里有一些字符串解析示例:
$ echo This is example. | vim -es '+s/example/test/g' '+%print' '+:q!' /dev/stdin
This is test.
$ echo This is example. | vim - -es '+s/example/test/g' '+%print' '+:q!'
Vim: Reading from stdin...
This is test.
Run Code Online (Sandbox Code Playgroud)
这是一个简单的例子ex
,它相当于vi -e
:
ex -s +%p -cq /etc/hosts
Run Code Online (Sandbox Code Playgroud)
有关:
归档时间: |
|
查看次数: |
14555 次 |
最近记录: |