【发布时间】:2017-05-24 23:45:51
【问题描述】:
我知道您可以使用 Ctrl + Shift + \ 在匹配的括号之间跳转。我想将光标放在括号之后,并尽可能轻松地删除该括号及其匹配的括号。
由于使用 Alt + Click 你可以有多个选择,我正在寻找类似的东西: Ctrl + Shift + Alt + \ 用于将另一个光标放在匹配的括号上,然后用一个退格键删除两者。
是否有删除一对匹配括号/括号的快捷方式?
【问题讨论】:
我知道您可以使用 Ctrl + Shift + \ 在匹配的括号之间跳转。我想将光标放在括号之后,并尽可能轻松地删除该括号及其匹配的括号。
由于使用 Alt + Click 你可以有多个选择,我正在寻找类似的东西: Ctrl + Shift + Alt + \ 用于将另一个光标放在匹配的括号上,然后用一个退格键删除两者。
是否有删除一对匹配括号/括号的快捷方式?
【问题讨论】:
有一个名为“Bracketeer”的扩展程序可以满足您的需求。
首先,安装
Ctrl-p,然后是ext install pustelto.bracketeer,然后是回车。
然后您可以将以下内容添加到您的keybindings.json
{
"key": "ctrl+alt+backspace",
"command": "bracketeer.removeBrackets"
},
然后您可以使用 ctrl-alt-backspace 删除匹配的括号。
另见:
【讨论】:
这适用于 ()、{} 和 []
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中添加这个宏的快捷方式
【讨论】: