如何用vipe将vim添加到管道(附代码)

125 阅读2分钟

你是否曾想过在管道中停止并编辑文本?有了vipe ,你就可以!

brew search 的输出为例:

$ brew search proxy
==> Formulae
aws-es-proxy                  metaproxy                     proxytunnel
dnscrypt-proxy                mitmproxy                     sproxy
haproxy                       oauth2_proxy                  tinyproxy
ios-webkit-debug-proxy        ocproxy                       twemproxy
libproxy                      proxychains-ng

==> Casks
proxyman

如果我们想调用brew info ,以获得这些公式的更多细节呢?

即使我们用管道将输出转到其他地方(例如cat),我们仍然有公式和卡斯的标题:

$ brew search proxy | cat
==> Formulae
aws-es-proxy
dnscrypt-proxy
haproxy
ios-webkit-debug-proxy
libproxy
metaproxy
mitmproxy
oauth2_proxy
ocproxy
proxychains-ng
proxytunnel
sproxy
tinyproxy
twemproxy

==> Casks
proxyman

我们可以写一些中间步骤来删除我们不需要的行。但是让我们的管道停下来,让我们编辑流,然后继续,这不是很好吗?

$ brew search proxy | magic | while read formula; do brew info $formula; done

事实证明,vipe 可以成为这种魔力!它将停止并给你一个vim会话,其中有前面的管道的输出。当你写/退出vim会话时,该输出将被发送到管道中的后续命令。真棒!"。

安装vipe

你可以在OSX上获得vipe ,作为moreutils brew公式的一部分:

$ brew install moreutils

使用方法

然后把它放到你想在管道中间快速编辑文本的地方。它也是查看管道中间输出的一个好方法:

$ brew search proxy | vipe | while read formula; do
  brew info "$formula";
done

当我们运行该命令时,brew search proxy ,输出直接进入vim缓冲区:

 1 ==> Formulae
 2 aws-es-proxy
 3 dnscrypt-proxy
 4 haproxy
 5 ios-webkit-debug-proxy
 6 libproxy
 7 metaproxy
 8 mitmproxy
 9 oauth2_proxy
10 ocproxy
11 proxychains-ng
12 proxytunnel
13 sproxy
14 tinyproxy
15 twemproxy
16
17 ==> Casks
18 proxyman

vim编辑的好处 我们可以把这个缓冲区处理成我们想要的任何东西:

1 mitmproxy

我们把它修剪成一个有趣的公式如何?当我们保存并退出时,流水线继续进入while read 循环,将所有的输入发送到brew info

"/private/var/folders/n6/gxxgmjhs1599x195xzdbnp_40000gn/T/mL0nDL6bCD" 1L, 10C written

mitmproxy: stable 4.0.4 (bottled), HEAD
Intercept, modify, replay, save HTTP/S traffic
https://mitmproxy.org
Not installed
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/mitmproxy.rb
==> Dependencies
Required: openssl@1.1 ✔, protobuf ✘, python ✘
==> Options
--HEAD
    Install HEAD version
==> Analytics
install: 6,017 (30 days), 15,281 (90 days), 46,094 (365 days)
install_on_request: 5,777 (30 days), 14,445 (90 days), 44,138 (365 days)
build_error: 0 (30 days)

很好!