大家平时可能都有需要方便快捷地进行些计算。虽然 macOS 自带的 Spotlight 支持一些简单的计算,但只要算式一复杂起来 Spotlight 就有些无能为力了。今天我们就给大家介绍如何结合 GNU Units 软件以及 iTerm 终端,让你可以用如 Command + Space 等快捷键快速打开和隐藏一个可以计算包括 log2(4) + log10(100) - sin(30 deg) = ?
、5mA * 3kΩ = ?V
、5USD + 10CNY = ?EUR
等在内的多种算式的计算器,让你随时随地都有一台多功能计算器!
预览
一、安装
首先我们可以从 https://iterm2.com/ 下载并安装安装 iTerm 客户端。安装之后打开客户端便能进入命令行终端。
其次,确保你已经安装了Homebrew套件管理工具,安装方法请参见本站文章“于 macOS 中安装 Homebrew 套件管理工具”。
然后我们便可以在命令行终端中通过下方命令来安装 GNU Units:
1 |
brew install gnu-units |
二、使用 GNU Units
我们可以在 iTerm 等终端中输入
1 |
gunits |
来运行GNU Units软件:
第一行我们可以输入想要的算式,而第二行则输入我们想要的单位。比如如果我们只是想要求简单的计算结果,我们便可以把算式输入第一行,并留空第二行(直接按回车):
如果我们想要计算带有单位的算式,我们便可以在第二行中输入我们想要的输出单位(第一行是我们的结果,第二行是该结果的倒数):
如果输出单位和输入算式的结果的单位并不匹配,程序也会提醒“conformability error”(一致性错误):
若要离开程序,可以输入 exit
或者按下 Control + C:
更详细的使用方法可参考 GNU Units 的官方文档:https://www.gnu.org/software/units/manual/units.html
三、配置 iTerm 快捷键快速打开 GNU Units
如果我们每次都需要先打开终端、再输入 gunits
后才能开启这个计算器,那这计算器可不能叫做“快捷”计算器。我们想要的效果是像 Spotlight 一样,我们只需要按下相应的快捷键,便可以从任何其他程序中打开这个 GNU Units 计算器。而 iTerm 正恰好贴心地给我们提供了这个功能:
通过这个叫做“Hotkey Window”的功能,我们可以设置让一个快捷键自动开启一个“Profile”(类似于一个窗口,但我们可以单独设定这个窗口的外观以及开启时需要执行的命令)。
首先,我们从 iTerm 的“Preferences...”里面找到“Keys”→“Hotkey”,并点击“Create a Dedicated Hotkey Window...”:
在弹出的窗口中,我们可以选择我们想要的快捷键(比如我这里就选择了 Option + Space )以及其他一些设置。经过我的试验,以下设置最能达到类似于 Spotlight 的效果:
在点击“OK”以后,iTerm 便为我们的这个快捷方式创建了一个新的“Profile”:
而我们也可以在顶上的“Profiles”下找到这个新创建的“Hotkey Window”:
现在如果你(在任意窗口——不需要一定在 iTerm 里面)按下你刚刚设置的快捷键(比如我设置的 Option + Space ),你便会发现一个 iTerm 窗口自动弹了出来。如果你再按一次这个快捷键,这个窗口便会消失。我们成功达到了类似于 Spotlight 的效果!🥳
但到目前为止我们还是得每次手动输入 gunits
来启动 GNU Units。为了让我们的快捷键窗口可以在启动时自动执行 gunits
,我们可以在“Profiles”里面点击左侧列表里面的“Hotkey Window”,并在“Send text at start: ”中输入 gunits
,让 iTerm 在该窗口打开时自动输入 gunits
命令:
现在如果我们退出并重新开启 iTerm,然后按下你设置的快捷键,你便会发现 gunits
自动执行了!
(小提示:在 iTerm 里面按下 Alt 的同时点击同一行的其他字符可以快速将光标跳转至该字符。)
四、配置 iTerm 快捷键窗口外观
如果你不怎么喜欢这个 iTerm 快捷键窗口现在的外观(比如我这里是一个半透明的长窗口,看起数字来不方便),你可以同样在“Profiles”里面点击左侧列表里面的“Hotkey Window”中个性化设置其“Colors”、“Text”以及“Window”。
我在前文“预览”中的快捷键窗口外观设置如下:
(我使用了“Color Presets...”中的“Light Background”并把“Normal” “White”的颜色改成了纯黑色。)
五、优化 GNU Units 输入
现在我们的快捷计算器已经基本成形了!但我自己使用过程中还注意到了如下问题:
- 每次启动时顶部总会显示“Currency exchange rates from FloatRates”等无用信息。
- 每次输入时 GNU Units 都会加上“You have: ”、“You want: ”等提示,但实际上在熟悉 GNU Units 后我们并不需要每次都有提示,而且这些字符还占用了我们的宝贵的窗口宽度。
- 每次输出的结果带有单位时,GNU Units 总会“贴心”地为我们加入结果的倒数。但我个人觉得这样同时显示倒数的结果很让人混淆。
- 我经常习惯性地想通过按 Control + C 来忽略这一行的输入(希望新起一行进行计算),但这却直接退出了 GNU Units,并一定需要重新输入
gunits
才能重新返回 GNU Units 程序中。
为了解决这些问题,我参考了 GNU Units 的官方文档 并写了一个小脚本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#!/bin/zsh # https://stackpointer.io/script/how-to-catch-ctrl-c-in-shell-script/248/ # this function is called when Ctrl-C is sent function trap_ctrlc () { # Do nothing. } # initialise trap to call trap_ctrlc function # when signal 2 (SIGINT) is received trap "trap_ctrlc" 2 clear # https://stackoverflow.com/a/697017/2603230 while true do gunits --one-line -q -v echo "" done |
其主要功能是以 --one-line
(不显示倒数)、-q
(不显示“Currency exchange rates from FloatRates”、“You have: ”、“You want: ”等)及 -v
(在输出含有单位时同时输出输入的算式(这样我能够更确切地看出我的计算))参数启动 GNU Units,以及在 GNU Units 退出时(包括 Control + C 退出时),自动立即重新启动一个新的 gunits
。这个小脚本很好地解决了我上方所遇到的那些小问题。
要使用这个脚本,我们只需把这个脚本保存成一个 .sh
文件(比如保存在 ~/Documents/calculator.sh
),然后在“Profiles”里面点击左侧列表里面的“Hotkey Window”,并在“Send text at start: ”中将我们之前输入的 gunits
改成 zsh 你的sh文件位置.sh
(比如 zsh ~/Documents/calculator.sh
)即可:
现在如果你重启 iTerm 后按下你设置的快捷键,你便应该可以看到本文开头预览的效果了!
拓展
本文所写的小技巧还可以有很多不同应用方向,比如我们也可以使用 GNU bc 计算器来实现类似的快捷键计算器,又或者使用其他的命令行程序来简化你的流程。
历史上的今天
2013年:WordPress 3.8发布啦!(10条评论)