PyCharm:将选定的文本发送到外部工具的 STDIN?

问题描述 投票:0回答:2

在我之前的 IDE 中,我有很多小型文本处理工具来帮助格式化标题、注释等。例如,我会选择一些注释行,按快捷键,处理文本并替换为带有时间戳和养眼效果的新版本。

在 PyCharm > IDE 设置 > 外部工具中,我确实可以配置将选定的文本发送到外部工具,但只能作为命令行参数。我需要它 a) 将文本发送到 STDIN,b) 用外部工具的 STDOUT 替换选择。

可能吗?

pycharm
2个回答
0
投票

目前这是不可能的。此功能有一个开放的功能请求:http://youtrack.jetbrains.com/issue/IDEA-76371


0
投票

这是一个老问题,但我最近遇到了同样的问题,所以我想我应该在这里发布我的解决方案,以防它对任何人有帮助。 我基本上遵循了 jetbrains 社区论坛上这条旧评论中概述的相同流程:

https://intellij-support.jetbrains.com/hc/en-us/community/posts/206589595-External-Tools-and-stdin

...我会怎么做:

  1. 创建一个代理脚本,它将接收 主脚本、要处理的文件和选择行/列作为其 参数
  2. 此脚本将读取原始文件并提取 选定的文本块
  3. 然后它将将此文本传递给主脚本 通过 STDIN 并从主脚本的 STDOUT 接收处理后的文本
  4. 之后剩下的就是用 处理一个并将结果文件内容写入文件

我继续打包了一个工具来处理 pypi 上所描述的方法(https://pypi.org/project/splice-replace/

然后您可以以正常方式在 intellij 中配置外部工具,但使用

splice-replace
工具作为命令名称,然后使用您要使用的实际工具作为第一个参数,然后为其提供以下特殊参数: “$FilePath$”$SelectionStartLine$ $SelectionStartColumn$ $SelectionEndLine$ $SelectionEndColumn$

© www.soinside.com 2019 - 2024. All rights reserved.