在我之前的 IDE 中,我有很多小型文本处理工具来帮助格式化标题、注释等。例如,我会选择一些注释行,按快捷键,处理文本并替换为带有时间戳和养眼效果的新版本。
在 PyCharm > IDE 设置 > 外部工具中,我确实可以配置将选定的文本发送到外部工具,但只能作为命令行参数。我需要它 a) 将文本发送到 STDIN,b) 用外部工具的 STDOUT 替换选择。
可能吗?
目前这是不可能的。此功能有一个开放的功能请求:http://youtrack.jetbrains.com/issue/IDEA-76371
这是一个老问题,但我最近遇到了同样的问题,所以我想我应该在这里发布我的解决方案,以防它对任何人有帮助。 我基本上遵循了 jetbrains 社区论坛上这条旧评论中概述的相同流程:
https://intellij-support.jetbrains.com/hc/en-us/community/posts/206589595-External-Tools-and-stdin
...我会怎么做:
- 创建一个代理脚本,它将接收 主脚本、要处理的文件和选择行/列作为其 参数
- 此脚本将读取原始文件并提取 选定的文本块
- 然后它将将此文本传递给主脚本 通过 STDIN 并从主脚本的 STDOUT 接收处理后的文本
- 之后剩下的就是用 处理一个并将结果文件内容写入文件
我继续打包了一个工具来处理 pypi 上所描述的方法(https://pypi.org/project/splice-replace/)
然后您可以以正常方式在 intellij 中配置外部工具,但使用
splice-replace
工具作为命令名称,然后使用您要使用的实际工具作为第一个参数,然后为其提供以下特殊参数: “$FilePath$”$SelectionStartLine$ $SelectionStartColumn$ $SelectionEndLine$ $SelectionEndColumn$