在Visual Studio Code中复制粘贴折叠文本

20

给定以下文本

Node1_L1
  Node1_L2
  Node2_L2
Node2_L1
  Node3_L2
    Node1_L3
    Node2_L3
  Node4_L2
    Node3_L3
    Node4_L3
Node3_L1
  Node5_L2
  Node6_L2  

我可以使用VSCode内置的折叠功能,将其折叠成如下所示的样子。
+ Node1_L1
  Node2_L1
+   Node3_L2
+   Node4_L2
  Node3_L1
    Node5_L2
    Node6_L2

但是当我现在选择折叠的文本并复制粘贴时,它实际上会抓取所有文本,包括隐藏的文本。因此,以上折叠文本前4行的复制粘贴结果将是:

Node1_L1
  Node1_L2
  Node2_L2
Node2_L1
  Node3_L2
    Node1_L3
    Node2_L3
  Node4_L2

whereas I would like to have

Node1_L1
Node2_L1
  Node3_L2
  Node4_L2  

希望这有意义,希望有人知道如何实现。谢谢!

我不使用VS Code,所以无法给出一个好的答案,但是你可以进行正则表达式搜索,然后突出显示所有找到的行。在你的情况下,你可以搜索 ^\s{0,2}[^\s]+$(最多有2个空格的行)。我不知道VSCode是否允许我们选择所有找到的行。 - Cave Johnson
抱歉回复晚了,感谢您的建议。然而,我在问题中提供的文本只是一个示例,可以以非常不同的方式折叠,因此可能非常复杂或根本无法找到匹配的正则表达式。不过,DAXaholic的答案对我来说非常好,没有任何问题留下 :) - NoaHammer
2个回答

13
也许有其他的方法,但是一个解决办法似乎是使用块选择和多个光标 - 请参见GIF。

Block selection to copy only top level folding text


1
“块选择”的快捷键是什么? - WeSam Abdallah
2
@WeSamAbdallah 应该是 Ctrl+Alt+Down - 参见文档,并搜索“在下方插入光标”。 - DAXaholic
今天似乎不再起作用了:块选择将展开折叠的代码,随着光标向下移动。 - Fogux
我找到的解决方案是:工具栏 -> 选择 -> 列选择模式。 - Fogux

1
如果选择不包括换行和回车符,则折叠的内容将不会被复制。
选择必须到达下一行的开头才能选择折叠文本(隐藏文本)。

enter image description here

https://github.com/Microsoft/vscode/issues/41922#issuecomment-359368290

实际上,这个人想要选择“展开”的文本,而忽略折叠的文本,所以他们需要使用多行选择,每个选择将跨越一行。

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