【发布时间】:2021-06-09 08:07:24
【问题描述】:
我在 Ubuntu 上使用了很多 gedit,现在在 Macos 上进行转换。我注意到 Macos 版本中的一些插件丢失了。例如,没有(AFAIK)评论/取消注释代码的开箱即用选项。但是,可以定义一个外部工具来基本上拥有你想要的任何东西。
我只想以 R/python 样式评论文本选择(在输入的每一行之前添加 #)。我去了工具 -> 管理外部工具并以这种方式定义了一个“注释代码”工具:
#!/bin/bash
awk '{print "#" $0}'
并将输入设置为“当前选择”,输出设置为“替换当前选择”。
如果您选择文本,它会起作用;但是,如果您不选择任何内容,它将永远停止,因为(据我所知)awk 正在等待输入。
如何避免这个问题?当然,我不需要awk(或其他)解决方案,只要可行就行。我对bash 工具(如awk 或sed)不太熟悉,所以很可能我遗漏了一些非常简单的东西。
【问题讨论】:
-
在 Bash 中没有任何优雅的方法可以检查脚本是否在标准输入上接收到任何内容。您可以简单地添加一个
timeout,但具体如何做到这一点在某种程度上取决于平台。参见例如stackoverflow.com/questions/526782/… -
感谢您的评论。理想情况下,如果在没有选择的情况下调用脚本,则不应等待任何内容。我不知道
gedit是如何将输入选择传递给脚本的,并且找不到在没有选择时什么都不做的解决方案。 -
我会假设它将区域作为标准输入传递。 Bash 脚本没有简单的方法来确定标准输入是否为空(它总是在您开始时,然后您等待),但也许在
gedit方面可以有一种方法来控制它。