IntelliJ - 如何仅复制代码折叠后可见的文本?

14

在IntellJ中是否有可能折叠大块代码,选择包围折叠部分的代码段,并仅复制可见文本?

例如,如果我有一个类似以下JSON文件的文件:

{
    "list1" : [
         1,
         2,
         3
     ],
    "list2" : [
         "a",
         "b",
         "c"
     ]
}

然后我将列表折叠起来,这样IDE就会将它们显示为:

{
    "list1" : [...],
    "list2" : [...]
}

有没有办法仅复制上面显示的文本?正常复制包括从视图中隐藏的代码。


注意:此用例适用于任意大的文件,我想检查更高级别的设计。即,一个文件中有数千行,包含许多不同的嵌套对象和数组。(我意识到在这种简单情况下,我可以手动输入值) - aaroncarsonart
3个回答

3
有趣的是,在IDEA中复制时,它保留了折叠状态(例如,参见IDEA-139523附带的屏幕截图)。这意味着数据以某种方式存在于剪贴板中,尽管可能只以一种其他程序无法读取的IDEA特定格式存在。

您所要求的一般功能似乎已在JetBrains票务跟踪系统中作为IDEA-126233。其中没有关于解决方法或何时进行工作的迹象。

不幸的是,您的选择似乎很有限。

  1. 您可以使用其他答案建议的外部工具来执行所需的格式设置。特别是如果仅限于JSON格式化,您可能能够找到一些其他独立工具,可以在您的开发环境中运行,满足您的安全和性能要求。
  2. 我建议在JetBrains票务跟踪系统中投票支持该问题。可能不会有太大的帮助,但至少让他们知道另一个人会发现它有用。如果您有进一步的解释或相关的描述,您认为现有票务中没有描述得足够清楚,您可以添加评论以帮助完善。
  3. 由于数据似乎以IDEA剪贴板中的某个地方存在,因为在应用程序内部复制时保留了折叠状态,因此可能可以在某种插件中添加此“按显示方式复制”的功能。如果您确实需要此功能并且找不到现有的插件,则可能需要查看编写此插件所需的难度。
  4. 如果您拥有JetBrains支持合同,您可能需要联系他们,看看他们是否能为您提供更多帮助。虽然我怀疑他们无法做比已经在系统中的票务开发更多的事情,但询问一下也无妨,也许他们知道其他有用的解决方法。

对于令人不满意的答案感到抱歉,但我认为这是目前最好的答案。


很好,这正是我需要听到的。如果在IntelliJ中不可用,那么这就是我需要的答案。我很高兴他们正在跟踪它,并且将来可能会提供支持。目前有一些解决方法,例如使用其他工具,即使IntelliJ不直接支持此功能。 - aaroncarsonart

3
我不知道如何在JetBrains中操作,但以下是在VSCode中进行的方法:
步骤1:在VSCode中打开您的代码。
步骤2:按下 Cmd + Shift + P (Mac) 或 Ctrl+Shift+P (Windows) 打开 Command Palette,搜索并选择 Fold All
步骤3:工具栏 -> 选项 -> 列选择模式。
步骤4:列选择所有代码,复制粘贴即可完成!

请参考此链接 https://liushiming.cn/article/how-to-copy-and-paste-folded-code-as-it-is-in-vscode.html,了解如何在VSCode中复制和粘贴折叠的代码。 - Shiming

1
对于您提出的用例,您不需要使用IntelliJ。只需使用另一个知道如何正确折叠文本的工具打开文件并从那里复制它。
我在网上搜索了一下json工具,并找到了这个: https://jsonformatter.curiousconcept.com/ 您可以将json粘贴到蓝色区域中,在黑色区域中按照您喜欢的方式折叠它,并从黑色区域中复制它。
请注意,您有一个折叠所有json节点的按钮。
这是复制结果:
{  
   "list1":[  ],
   "list2":[  ]
}

enter image description here

在下一张图片中,您可以看到当您复制黑色区域中的文本时它的样子:

enter image description here

如果您坚持要通过IntelliJ完成此操作,可能有适用于您文件类型的插件可供使用,或者您可以自己编写新的IntelliJ插件。

来自您的


5
虽然这个方法可行,但它并没有回答我的问题。如果我在处理专有软件,使用像这样的外部工具可能不是最佳选择。你永远不知道这些外部检查器、格式化器和差异检查器会对你提供的数据做什么。此外,如果我复制/粘贴一个有4000行的文件,一些网站可能会因此而崩溃。我的问题要求举例说明IntelliJ,因为最好不要离开我的超级花哨的IDE来完成应该是简单任务的工作。我会检查一些插件,并在以后更新这个问题。 - aaroncarsonart
2
此外,目前(截至2021年2月23日)的网页设计很不幸,复制/粘贴(两个网页按钮)和直接高亮/上下文点击/复制为纯文本都会复制完整的未折叠的JSON。 - Andrew Ward

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接