有没有带历史记录智能提醒的命令行工具?

2019-11-28 01:12:41 +08:00
 Veyhunk

作为前端搬砖工, 常用的命令就那几条, 可是每次重复输入很机械, 写成脚本灵活度又不够, 网上找了几圈, 也没有满意的答案

有没有命令行大佬, 推荐一款带历史记录智能提示的命令行工具?? mac/win 都可以哈

万分感谢

需求很简单

输入 n 按下 tab 选择 npm run dev 或者其他历史记录

输入 g 按下 tab 选择 git checkout dev 或者其他历史记录

6340 次点击
所在节点    程序员
46 条回复
Davic1
2019-11-29 09:02:58 +08:00
@zthxxx 兄弟呀, 这个和 history 也差不多啊, 如 40# 所说....
zthxxx
2019-11-29 11:27:08 +08:00
@mcfog
@eclipselu
@tsui
@Davic1

嘿嘿,如果你在用 fzf,那你更该试试我这个 zsh-history-enquirer 工具,因为我正是深度用过 fzf 甚至是它的衍生品 peco 和 percol 做历史搜索,
并被它们这种 「工程师思维只做个牛逼的工具,完全不考虑用户使用体验」的表现所震惊,
才自己去造了轮子
或者说直接针对这些缺点做改进 (开始把我批判一番)

首先 fzf 居然都没有去重,你见过前后翻 10 页都是相同的 gco . 么?
其次 fzf 不是 inline (行内) 的,fzf 输入地方离实际命令行输入地方离了 13 行,这会造成目光抖动,在两个输入地方之间来回跳动;
再然后它给出的排序居然是从上到下的时间正序而不是倒序 (对于直觉来说,常用相识命令就是希望搜索最近使用的)
最后,长命令超过一行,就显示不了,既不显示开头也不显示结尾,居然是显示中间;要猜猜下图是什么命令么
最后的最后,当你输入完没有搜索到想要的结果后,想放弃退出,你猜它会给你保留原始输入么?不会。

以下 imgur 图床,需代理






至于 peco / percol,除了以上差不多的问题外,它们会直接打开一个窗口,太重了,不仅目光关注点跳动,还会打断注意力,最重要的是你们可以直接去官网看看预览,真的比 fzf 都丑多了。

-------

行内、轻量、去重、倒序、显示长命令、退出保留输入,我就加了这些药给自己用
mcfog
2019-11-29 11:57:21 +08:00
@zthxxx 看了,不需要,直到你说了我才发现 fzf 是不去重的,我用 fzf 都是直接命中一个正确结果的,就算需要去重,我也会用 sort|uniq|fzf

fzf 的好处正是由于他并不是专门为了 history match 设计的,k8s 切环境,ssh 上机器,常用的工作目录切换等等,我日常工作的所有“选择题”都是 fzf 驱动的几行脚本,你告诉我其中某一个选择题可以用一个工具做的更好并不能打动我换工具

我还觉得你震惊错了方向,扳手有一百种功能,你看人用扳手来敲钉子,然后震惊扳手的设计者怎么那么不考虑体验然后设计出了锤子,这很好,锤子有锤子的优点,但对于平常用扳手四五十种功能,只是偶尔敲一下钉子的人来说,你的锤子再好用也没用,不用,谢谢
zthxxx
2019-11-29 15:45:44 +08:00
@mcfog #43 嗯,你这个就是我刚才说的 「纯工程师思维」,希望有一种银弹解决任何场景下任何问题;

况且你说的这些 「 k8s 切环境,ssh 上机器,常用的工作目录切换」等「选择题」不都是同一类「历史命令操作」么
mcfog
2019-11-29 16:04:27 +08:00
@zthxxx unix 哲学恰好是反对银弹的,先 do one thing 再 do it well,这里 fzf 解决的就是“终端下从多行文件中选择一行或多行”这一件事,至于这个多行文件是历史也好是某个文件也好,还是另一个命令的输出也好,是否排序是否去重,选择完以后的结果做什么事情,fzf 一概不管,工程师自己去写脚本把工作流胶起来,这种工程师思维是简单高效的。如果你没有理解到为何这种设计行之有效,为何 fzf 选择不做去重,不做很多你觉得是理所应当的功能,我只能表示遗憾

k8s 的环境列表不在历史记录而在配置文件里,ssh 的机器列表不在历史记录而在 aws api 里,每天都有 auto scaling 机器可能都不一样,根本不可能依赖历史,常用工作目录更不是搜历史搜出来的了,至少我肯定不会反复 cd 完整路径到常用工作目录
hack21
90 天前
@zthxxx #30 牛逼,这就是我想要的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/623793

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX