我正在使用 zsh 和prezto配置框架。我希望能够输入诸如1 + 2 * (3 / 4)
“2.5”之类的术语。
这些术语可以被识别,因为它们只包含某些字符:0123456789 +-*/()
. 对于更复杂的一切,我可以打开一个专用程序(如 python shell)。
不够好的解决方案
- 使用程序:我不想
python -c
在我的任期之前键入或将其输入bc
. 打字太多了,我希望它可以做得更好。 - 使用函数或别名:有一些解决方案允许在使用
c
or=
或时进行这些计算calc
,例如 in= 1 + 2 * (3 / 4)
。这很好,但与第 1 点基本相同。 - 使用另一个 shell:我知道xonsh并且我确信还有其他 shell 可以做到这一点。但我喜欢zsh,我不想换shell。
什么可能有效
- zsh 插件:我可以想象一个 zsh 插件,它会查找命令是否与某个正则表达式匹配,然后将其通过管道传输到 python/bc/whatever 中。有点类似于仅输入目录名称时自动 cd 所做的事情。我不知道这是否可能。我很想听听一些提示,这样我才能写出来。
- Intercept
command not found
:和4类似。或许可以在没有找到命令的情况下拦截zsh的行为。但同样,我不知道我会怎么做。 - 为所有数字取别名:我想你可以为所有数字写一个别名,这样它们就是将数学字符串的其余部分作为参数的命令。这可能有效,但看起来很hacky。此外,“所有数字”是很多别名,即使在为其自动生成代码时也是如此。
我想听听关于如何解决这个问题的想法。我不害怕编写代码,但我更喜欢干净的解决方案而不是 hacky 的解决方案。