切入正题:文本编辑器*和*制表符与空格!哦哦!
我的生活中有Mac。他们会定期收到更新。在过去的几天里,他们获得了 Monterey 版本 12.3。这似乎很平静……直到我使用我的小包装脚本编辑某些东西。
我已经有一段时间有这个叫做“e”的东西了。这是一个愚蠢的小脚本,可以做几件事。它使用给定文件启动我的编辑器,并使用正确的参数启动它以使其禁用换行并使 [TAB] 键实际上放在两个空格中。
为什么有脚本而不是 .nanorc?好吧,我认为这早于他们拥有该文件的日期。此外,还有一个细微差别:我曾经经常使用 Makefile,就像在我使用我的非 Makefile C++ 构建工具之前一样,在这种情况下,你*实际上想要*不开玩笑的 ^I 制表符。当您编写规则的后续部分时,这是它允许的唯一分隔符。
因此,我的愚蠢脚本大部分时间都会使用“-w -E -T 2”,除非它在 Makefile 上运行,此时它会跳过这些参数。很简单,对吧?
很长一段时间以来,我一直在 Linux 机器和 Mac 上使用这个脚本,但它刚刚在 Mac 上坏了。我现在收到关于“E”和“T”不是有效参数的投诉,然后它吐出了“pico 编辑器可能的起始参数”。等等,什么?
皮克回来了?确实,在 Mac 上,从 12.3 开始,pico 实际上又回来了。为了确保我不是在想象事情,我找到了一台尚未升级的机器并在那里进行了检查。果然,它实际上是 nano 而不是 pico。
对于那些不在这个世界上的人来说,pico 是 pine 邮件客户端的作曲家部分,它被拆分成自己的东西。多年来,它存在一些奇怪的许可问题,而且通常不是最容易找到的。或许正因为如此,nano 才开始兴起。它曾经在功能和行为方面非常接近,但 nano 在某些时候出现了分歧。它具有将 [TAB] 键转换为一定数量的空格的能力,就像您多次敲击空格键一样。微微没有。
在某些时候,我从源代码中的文字制表符转换为空格,这可能是由于在工作中使用了这种风格而不是讨厌它。因此,实际上我开始依赖纳米行为而没有意识到这一点。
macOS 12.3 更新悄悄地将基本系统从 nano 2.0.6 切换到 pico 5.09,所以如果你使用这些开关,你就不走运了。如果您关心这种事情,我的建议是从 Macports 或其他任何地方获取 nano,而忘记使用股票编辑器。这就是我要做的。至少我不必重新编程我的手指,因为“e foo”仍然是“e foo”,无论它最终在下面调用什么。
至于 pico 本身缺少一个功能,真的有点奇怪。如果您深入研究源代码,他们会发现这个 random.c 带有一个名为 tab 的函数,该函数声称使用空格“模拟制表位”。也就是说,我找不到任何地方可以用魔法值调用它,这会使它表现得那样。
这也是可以追溯到 80 年代的老式 C,我不想花太多时间在它上面,所以可能会有一些方法。
如果这个开关只是苹果从他们的操作系统中删除 GPL 的东西,我不会感到惊讶——pico 似乎使用 Apache 许可证。他们在某个时候(我认为是大苏尔)为 zsh(MIT 许可证)倾倒了 bash,而现在呢?好吧。