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

IntelliJ - Copy only visible text after code folding?

是否可以在IntellJ中折叠大块代码,select一段代码包围折叠部分,只复制可见的文本?

例如,如果我有一个 JSON 文件,例如:

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

然后我折叠列表,以便 IDE 将它们显示为:

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

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

对于您提供的用例,您不需要 IntelliJ。 只需使用另一个知道如何正确折叠文本的工具打开文件并从那里复制它。

我对 json 在线工具进行了简短搜索,找到了这个: https://jsonformatter.curiousconcept.com/

你可以在蓝色区域粘贴你的json,在黑色区域按照你喜欢的方式折叠,然后从黑色区域复制。

请注意,您有一个折叠所有 json 节点的按钮。

这是应对结果:

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

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

如果您坚持要通过 IntelliJ 来完成,可能有适合您的文件类型的插件允许它,或者您可以自己编写一个新的 IntelliJ 插件。

来自你的

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

JetBrains 票务跟踪系统中显示的一般功能请求是按照您的要求执行的 IDEA-126233。没有迹象表明有解决方法或何时可以解决。

很遗憾,您的选择似乎有限。

  1. 您可以按照另一个答案中的建议使用外部工具来进行所需的格式化。特别是如果它仅限于 JSON 格式化,您可以在您的开发环境中找到一些其他的独立工具,您可以 运行 满足您的安全和性能要求。
  2. 我建议在 JetBrains 票务系统中为该票投票。可能不会完成很多,但至少让他们知道另一个人会发现它有用。如果您有进一步的解释或描述可能相关,但您认为现有票证中描述得不够充分,您可以添加您的评论以帮助充实它。
  3. 由于数据似乎在 IDEA 剪贴板中的某处,因为它在应用程序中复制时保留了折叠,所以大概可以在某种插件中添加此 "Copy as displayed" 功能。如果你真的需要这个并且找不到现有的插件,你可能想看看自己写这个插件有多难。
  4. 如果您有 JetBrains 支持合同,您可能想联系他们,看看他们是否可以进一步帮助您。虽然我怀疑他们除了注意到您对他们系统中已有的票证的开发感兴趣之外还能做些什么,但问问也无妨,而且他们可能知道其他一些对您有用的解决方法。

很抱歉给出了一个不太令人满意的答案,但我怀疑这是目前最好的答案。

我不知道如何在 jetbrains 中执行此操作,但这是在 vscode 中执行的方法:

第 1 步: 在 vscode

中打开您的代码

Step2:Cmd + Shift + P(Mac)或Ctrl+Shift+P(Windows)打开Command Palette,搜索并 select Fold All

Step3:工具栏->选择->列选择模式

Step4:列select所有代码,复制粘贴,大功告成!