Heroku CLI遇到FZF

在使用tmux和fzf时,我遇到了另一个有趣的fzf用例:使用模糊查找器简化Heroku CLI的使用。

想象一下,您现在在Heroku上有一些应用程序,然后又想拖尾它们的日志,或者想通过ssh进入其中的一个。 这样做有一个问题:您始终必须记住确切的应用程序名称才能运行$ heroku logs -t -a awesome-app-staging 。 还是它是staging-awesome-app ? 好吧,您看到了问题所在。 另一个解决方案可能是为每个应用程序定义一个别名。 但是,这并不能很好地扩展…

但是在CLI中为您的Heroku应用程序使用模糊查找器呢? 🤖

切换到vim时,我首先听说了fzf,并开始高兴地使用它来打开文件。 我最近开始使用tmux,fzf也可以提供很大的帮助。 这个stackoverflow帖子向我展示了如何使用fzf在tmux窗口之间进行切换。 我还使用这种方法在tmux会话之间切换(并在链接的stackoverflow帖子中共享了解决方案)。 这最终导致将fzf与Heroku CLI结合使用的想法。

魔术命令是:

 $ heroku apps --all | grep '(' | sed 's/ .*$//' | fzf --header='Select the app you want to tail the logs' | xargs heroku logs -t -a 

当然,您应该为此创建别名:

 alias heroku-logs="heroku apps --all | grep '(' | sed 's/ .*$//' | fzf --header='Select the app you want to tail the logs' | xargs heroku logs -t -a" 
alias heroku-bash="heroku apps --all | grep '(' | sed 's/ .*$//' | fzf --header='Select the app you want to bash into' | xargs heroku logs -t -a"

逐步说明

第一条命令应该是不言自明的。 它为您提供了Heroku上所有应用程序的列表。 但是这里的格式很重要! 该命令返回两个列表。 您自己的应用程序以及您作为协作者的应用程序:

 $ heroku apps --all 
 === peterfication@example.com Apps 
obscure-tundra-15966 (us)
nameless-basin-19036 (eu)
 === Collaborated Apps 
shrouded-fortress-18816 (eu) someone-else@example.com