如何在VS Code中删除匹配的括号?

33

我知道你可以使用 Ctrl + Shift + \ 在匹配的括号之间跳转。我想要的是能够将光标放在一个括号后面,并尽可能轻松地删除该括号及其匹配括号。

由于使用 Alt + 点击 可以进行多个选择,因此我正在寻找类似于 Ctrl + Shift + Alt + \ 的快捷键,以在匹配的括号上放置另一个光标,然后用一个退格键同时删除两个括号。

是否有一种快捷键可以删除一对匹配的括号/圆括号?

3个回答

44

有一个叫做Bracketeer的扩展程序可以实现您想要的功能。

首先使用 Ctrl-p 安装扩展:

ext install pustelto.bracketeer,然后按回车。

之后您可以将以下内容添加到您的 keybindings.json 文件中:

  {
    "key": "ctrl+alt+backspace",
    "command": "bracketeer.removeBrackets"
  },
您可以使用 ctrl-alt-backspace 来删除匹配的括号。

1
有没有一种方法可以在一个快捷键中删除括号所在的行,并将所有代码的缩进取消? - mrvladimir
@mrvladimir,你发现了删除这些括号行的方法吗?重新缩进可以通过在保存时使用类似于“prettier”的格式化程序自动进行。 - alexanderdavide
@alexanderdavide 很抱歉,我没有。 - mrvladimir
在 Open VSX 上是否有类似的东西发布?我正在使用 Codium。 - wjandrea
1
你不再需要为此安装扩展了,请查看其他答案。 - bwdm

14
在v1.77的内部版本中(可能也会在2023年4月初的稳定版v1.77中出现),新增了一个新命令:
Remove Brackets
editor.action.removeBrackets

默认情况下,在Windows上绑定到Ctrl+Alt+Backspace,在Mac上绑定到Cmd + Opt + Backspace
该命令将删除包围光标位置的匹配括号。因此,光标可以位于任何地方 - 不一定紧邻其中一个括号 - 在具有周围括号的代码或文本中(不过在括号删除后似乎不会重新格式化)。

现在它可以工作了,这应该是最佳答案。 - catastrophic-failure
1
在某些Linux发行版中,按下Ctrl + Alt + Baksoace可以重新启动机器。 - Ryan Day
1
在1.79版本上对我有效,Mac上的快捷键是Cmd + Opt + Backspace - bwdm

-5

这适用于 (), {} 和 []

Sub DeleteMatchingBrace()
Dim sel As TextSelection = DTE.ActiveDocument.Selection
Dim ap As VirtualPoint = sel.ActivePoint

If (sel.Text() <> "") Then Exit Sub
' reposition
DTE.ExecuteCommand("Edit.GoToBrace") : DTE.ExecuteCommand("Edit.GoToBrace") 

If (ap.DisplayColumn <= ap.LineLength) Then sel.CharRight(True)

Dim c As String = sel.Text
Dim isRight As Boolean = False
If (c <> "(" And c <> "[" And c <> "{") Then
    sel.CharLeft(True, 1 + IIf(c = "", 0, 1))
    c = sel.Text
    sel.CharRight()
    If (c <> ")" And c <> "]" And c <> "}") Then Exit Sub
    isRight = True
End If

Dim line = ap.Line
Dim pos = ap.DisplayColumn
DTE.ExecuteCommand("Edit.GoToBrace")
If (isRight) Then sel.CharRight(True) Else sel.CharLeft(True)

sel.Text = ""
If (isRight And line = ap.Line) Then pos = pos - 1
sel.MoveToDisplayColumn(line, pos)
sel.CharLeft(True)
sel.Text = ""
End Sub

然后在VS中为此宏添加一个快捷方式


1
我该如何将这个添加到VS Code? - Guimo
如果你想的话,可以专门为此创建一个类或方法。 - eldix_
1
但是那种语言是Visual Basic,对吧?请注意,我希望它能在Visual Studio Code中工作,而不是在Visual Studio中,也许你正在考虑后者(如果不是,我完全迷失了方向)。 - Guimo
1
Visual Studio Code <> Visual Studio. - Bill_Stewart

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