终点站骑师的工具带

2020-08-07 02:27:37

您认为软件在过去20年中发生了多大变化?许多人会说相当多。但是,我的观点是,从根本上说,没有太多真正的变化。我们中的许多人仍然使用告诉计算机要做什么的久经考验的方法:终端。虽然这些年来它的外观有了一些改变,但它从根本上仍然是50年前的工具。但是终端实际上只是一个窗口,我们通过它使用的工具多年来发生了变化。至少对我们中的一些人来说是这样。作为一个每天大部分时间都在敲打我的机械键盘的人,我想分享一些我用来工作的现代工具,其中许多取代了通常安装的*nix工具。

我一直在寻求改进新工具,并将其集成到我的工作流程中。如果你有任何建议,请随时给我发电子邮件到这篇帖子底部的地址或在Twitter上给我发消息。

编辑→编译→测试→编辑→编译→测试→编辑→编译→测试。

您有没有发现自己陷入了一次又一次地编辑文件、执行/编译文件的循环中?好了,这里是您的主行→⬆️rsi的解决方案。

我们不要再重复了!进入入口,舞台左转。Entr是一个相当简单的命令行实用程序,只要文件或文件列表发生更改,它就会执行命令。当与find或fd之类的实用程序结合使用时,它会变得异常强大。

Fd";.+\.py";|entr python-m pytest ome_test.pyfd-g";*.go";|entr-r go运行cmd/server.go。

我的日常工作主要是python,所以对我来说,一个常见的用例是:使用带有类似命令的nevim在每次保存文件后自动运行测试,对于Go等编译语言也是类似的。

另一个常见的问题是在开发Web服务器应用程序时。例如,在GO中,我使用类似于以下内容的命令:

Fd-g";*.go";|entr-r sh-c";转到构建cmd/server.go-o server&;&;./server";

这将在每次文件更改后重建并运行服务器。当检测到文件更改时,-r标志向进程发送SIGINT,然后重新执行命令。很整洁,对吧?

值得指出的是,这是许多IDE中的一个共同特性。作为PyCharm的偶尔用户,我已经使用了内置的等价物来达到同样的效果。然而,我更喜欢在VIM工作,所以这个职位适合我。

对于*NIX用户来说,Find是一个由来已久的工具。但是,对于那些还没有习惯find的深奥语法,或者正在寻找一些不需要键入的东西(以及其他许多非常好的功能)的人来说,只需看fd就可以了。您可能已经注意到,我在前面的示例entr中使用了fd。

为了快速搜索,我通常更喜欢glob模式而不是regex,因此大多数时候我会在命令中添加a-g以启用glob模式。

FD真正闪耀的领域之一是改进了--exec/-e标志的模板语法。主要的GitHub自述文件中有一些非常可靠的示例,因此请务必查看它们的自述文件。

当我了解GREP-R的那一天,我的生活就改变了。递归搜索代码库中的文本很容易成为我最常见的日常任务之一。对于我的日常工作,我们有..。很多文件,有些很大。银色搜索器,或者仅仅是ag(银色🙂的原子符号)是grep-r的一个简单的替代品,它的性能更好,在终端上有很好的ANSI色编码。其语法非常类似于grep,因此它是一个很好的临时替代工具,可以将您的工作流加速几毫秒。

Nvim是臭名昭著的vim项目的一个分支。该项目的大部分内容都集中在清理代码库、添加异步支持(后来添加到版本8的VIM中),以及将Lua作为一流语言。尤其是Lua API允许更健壮、更易于维护的插件(理论上)。话虽如此,我并不热衷于定制我的编辑器,尽管我已经找到了几条捷径,并依赖于几个插件。我通常倾向于记住缺省的键绑定,所以当从一个系统移到另一个系统时,我不必忘记或搞砸文本输入。看看我的点文件吧!

不管你每天使用哪个编辑器,它都值得学习VIM的基础知识,它几乎可以在每一个Linux或Unix系统上使用,而且在快速编辑配置文件方面尤其出色。

AERC是Drew DeVault的项目之一,最初是为了适应他的特定工作流程而建造的。尽管如此,它实际上是一个非常好的终端IMAP4/SMTP/POP3客户端的现代实现(假设您主要使用文本/纯文本)。它比我试过的小狗或其他替代品要直观得多,而且速度快。嗯,通常是这样的。我注意到与邮件服务器的高延迟连接有一些小的性能问题,但总体来说体验很棒,它是我的电子邮件客户端的选择。

您是否曾经在编写readme.md时不知何故忘记了需要双换行符才能在标记中正确呈现它?我知道对我这行的人来说,我的钱远远超出了合理的范围。为了帮助解决标记呈现的问题,MDR使用颜色突出显示和富文本格式来呈现标记!它甚至尝试渲染图像!

鉴于并非所有Markdown的输出格式(通常是HTML)都与渲染到终端兼容,它确实做出了一些妥协,但我发现它99%的时间都很好。

要比较呈现为HTML的效果,请查看该项目的Readme.md。

其他一些我喜欢在适当的时候使用的工具,但我不想把它们包括在主要列表中:

Redo(1)-make,但要好得多我更喜欢这样做,因为它没有Makefile的一些奇怪的格式化怪癖,而且通常更容易使用和理解。

TLDR(1)-手册页快速参考我实际上还没有用到这个,我只是还没有把它集成到我的工作流程中,但是我很欣赏这个项目,很可能最终会用到它

Ripgrep/rg(1)-与ag(1)类似,这是一个更快、更现代的grep-r命令,这个命令是根据反馈添加的。我不用它,但很多人似乎更喜欢它。

谢谢你的阅读!如果您有任何问题或意见,请给我发电子邮件至[email protected]或发推特至@chiefnoah13