Select VS Code 中匹配括号之间的所有内容

Select everything between matching brackets in VS Code

VS Code 中是否有一个快捷方式可以选择匹配括号之间的所有代码?例如。在 Atom 中,这个快捷方式是 ctrl+alt+m.

将光标放在括号内(不是紧挨着括号)并执行 editor.action.smartSelect.grow 直到选中括号内的所有内容。默认快捷键是Shift+A​​lt+Right(或Ctrl+Shift+Right on Mac).

您可以使用 editor.action.smartSelect.shrink 缩小选择,它具有默认快捷方式 Shift+A​​lt+(或Ctrl+Shift+ on Mac) .

我正在使用这个名为 Quick and Simple Text Selection 的扩展程序 - 是的,就是这个名字 :)

如果您不想使用扩展程序,这是迄今为止我想到的最好的方法:转到 edit keyboard shortcuts 并从那里打开您的 keybindings.json 文件并添加以下行

{
    "key": "ctrl+'",
    "command": "editor.action.smartSelect.grow",
    "when": "editorTextFocus"
}

我建议将这些键重新映射到另一个键,这个组合键很流行,有时会因为与其他应用程序冲突而不起作用。

打开快捷键设置,输入smartselect找到这个设置,grow就是把选区从光标当前位置扩大到最近的括号,如果要扩大或者缩小到下一个括号。

我仍然认为 the expand region extension 是解决此问题的方法。但是 vscode 1.20 确实添加了 "Select to Bracket" 命令(参见命令面板)。它没有默认的键绑定,但命令是

editor.action.selectToBracket

因此您可以分配自己的绑定。但它不像扩展名那么方便。上面提到的 smartSelect 选项给我 unexpected/unwanted 结果。

------------ 更新 --------------

editor.action.smartSelect.expand 命令是在此处答案后的某个时间点添加的。

绑定到 Shift+Alt+RightArrow。将逐步扩展 selection 包括在括号内,不包括括号,如果你愿意的话。您需要不断触发 RightArrow 才能到达您想要的位置。如果您在括号旁边开始,则不会 select 仅在括号内 - 从其他任何地方开始,它会。

正如 Mark 所回答的那样,editor.action.selectToBracket 有效。我将键绑定分配给

ctrl+shift+m

作为键盘快捷键。这在旧版本的 VS 中曾经是默认设置。

注意:Ctrl+m是"Go to bracket"

的快捷键

editor.action.smartSelect.expand,分配给ctrl+shift+right会展开你当前的 selection,所以在一个字符串中,将扩展到当前单词,并在再次按下时扩展到整个字符串。我认为这是学习的正确捷径,因为它还可以从字符串扩展到 select 更多的包装器,这是一件非常巧妙的事情。

从 v1.44 开始,不再为 editor.action.smartSelect.grow 分配键盘快捷键,如 Wosi 当前接受的答案中所述。

在 MacOS 中:它是 shift + control + right,您向右点击几次以展开 smartSelect

  • 要查找与 smartSelect 相关的设置,请转到 Keyboard Shortcuts 或使用 command + k command + s
  • 您可以通过输入 command + k command + r 查看 VSCode Keyboard Shortcuts Reference。它将带您前往 this page.

简答 vscode 2021 在 Win10 中:ctrl + shift + space

--

  "key": "ctrl+shift+space",
  "command": "editor.action.smartSelect.grow",
  "when": "editorTextFocus"

扩展 BracketSelect 完美地实现了这一目的! 它选择 所有文本 最近的 匹配引号或括号 一次 。按两次,它会将分隔元素(引号或括号)添加到选择中。再按一次,选区会越来越大。

基本上,它的工作方式类似于 smartSelect 命令,但有一个巧妙的区别,即它会一次选择括号或引号内的所有文本,对我来说,这是一种比 smartSelect 有效。

我发现以上所有答案都有效,但它们还在左括号前 select 一个 space,右括号前 select。而不是实际上 select 仅显示括号之间的文本。您可以通过按 command+[ 来测试它,它会移动整个条件,例如,而不仅仅是括号之间的代码。我在 Coda 中格式化代码时常用的东西。

我找到的一个解决方案是一个名为 Scoper.

的插件

这会突出显示括号内的所有内容,但实际上并未突出显示。您可以设置突出显示颜色。然后我可以在第一个括号内单击,按住 Shift 键,然后在右括号前单击以实际突出显示括号之间的所有内容,并排除括号本身。

很多人可能看不到这方面的用例,但我认为我会 post 以防它对任何人有帮助,因为 none 当前的解决方案对我有用。