命令行是非常高效的工具, 但一个很常见的现象是, 很多命令行过一段时间就容易忘. 举个栗子, 如果我们常用 Git 命令行管理代码, 利用 conda 命令管理开发环境, 如果过一段时间没用了, 那么你还记得如何用 Git 将本地代码同步到 GitHub, 还记得如何用 conda 命令删除一个本地环境吗?
当然, 我们可以在网上搜索一下, 也能快速找到答案, 但总之还是挺不方便的. 我们常见的做法是, 将容易忘记的命令行写到笔记中去, 忘了再查就是. 但现在, 有一个新的开源项目 navi, 它提供了一个交互式的备忘录.
看看下面的动图, 可以说, 不用做笔记, 不用查 History, 我们再也不用担心忘记命令行了.
如上所示, navi 允许我们查阅所有的备忘录并执行对应的命令, 值得注意的是, 备忘录是实时匹配的, 如果我键入 Git, 那么差不多就剩下 Git 相关的命令行.
项目地址: https://github.com/denisidoro/navi
神奇的命令行备忘录: navi
机器之心也尝试了该工具, 从安装到使用, 总体感觉非常便捷. 我们可以使用已有的命令行备忘录, 也能自己导入以前常用的备忘录. 我们可以配置可以直接运行的命令行, 只需要手动加上参数就行; 也可以写上备忘录注释, 再手动键入命令行.
该项目表示, navi 的目标主要是:
通过给定关键字或文字描述, 更便捷地查找命令;
如果作为长命令的辅助部分, 查找后的结果也可以直接复制粘贴到主命令;
我们的命令行使用习惯或备忘录可以与其它人共享;
此外, 该工具也能实现命令行的自动补全, 不过这属于高级用法.
总体而言, 它就是有助于命令行的整体应用. 如下图所示, 我们将几个 conda 命令也加到了备忘录中, 键入命令行的时候就会显示提示:
这几条都常用的 conda 命令是我们手动加入的, 其中最下一行的绿色「conda」是我们键入的内容, 它缩小了命令行搜索范围. 最上面白框内的命令行是当前输入的内容, 按确认键就会执行该命令行.
navi 该怎么用
我们是在 macOS 系统上测试的, 可以便捷地使用 Homebrew 安装: brew install denisidoro/tools/navi. 其它系统估计满足环境也是可以的, 如下是没有 Homebrew 时的安装方法:
- Git clone http://github.com/denisidoro/navi /opt/navicd /opt/navi
- sudo make install
安装完成后, 可以直接在命令行内键入 navi, 从而进入到交互式备忘录界面. 对于初始的 navi, 它一共包含 9 个内置的备忘录, 我们可以修改它们.
进入后的交互式界面如下图所示, 我们删除了一些不太用得上的默认备忘录.
下面在黄色光标的地方, 就可以愉快地键入并运行命令行了.
自定义个备忘录
navi 很重要的功能是能自定义备忘录, 我们可以仿照自带的备忘录写一个新的. 该项目表示, 我们可以用命令行传递. cheat 文件, 从而达到添加的目的:
navi --dir "/folder/with/cheats"
也可以直接把我们的备忘录文件夹添加到 Bash 环境中. 机器之心做了更简单的一个操作, 直接查找该工具的安装目录, 然后手动删增备忘录, 我们的发现这也是可以的. 如果读者也使用 Homebrew 安装, 那么在 usr/local/Cellar/navi 路径下就能找到默认备忘录.
当然, 我们是要把以前的笔记做成. cheat 纯文本的, 它的用法也不难, 只不过要实现补全或带参数的命令, 还是需要一些特殊的语法. 如下是一个标准的. cheat 文件:
cheat 语法主要有以下几点:
以「%」开头的行包含了特定的 Tag, 也就是说上图「Git」会作为标签加到该文件所有命令行最后;
以「#」开头的行描述了该命令行的用法;
以「$」开头的行应该为给定参数生成建议值;
其它所有非空行应该都为可执行命令行.
如下所示为有效的. cheat 文件:
- % Git, code
- # Change branch
- Git checkout
- $ branch: Git branch | awk '{print $NF}'
最后, 我们真的比较推荐这个新工具, 用它来查备忘命令行实在是太方便了. 当然, 如果读者们有用过更好的这类工具, 也欢迎写留言推荐推荐.
来源: http://news.51cto.com/art/201909/603361.htm