转到Visual Studio中的匹配括号吗?


544

在Visual Studio 2008中,有没有一种方法可以从右括号到右括号?我发现有很多关于突出显示括号的内容,但是没有关于将光标移动到括号的内容。

(此问题的VB.NET版本:在“ If / End If”之间跳转的键盘快捷方式


1
令人难以置信的是,这似乎不适用于Mac Visual Studio上的.js文件(2019)。WTH?!
Fattie

@Fattie,它在Windows 10中的.cs文件中也不起作用。我非常有信心,这对于VS 2019来说是一个全面的问题,因此我提出了一个新问题:stackoverflow.com/q/59183422/1739000
NH。

Answers:


734

我为您找到了这一点:在Visual Studio中的括号之间跳转

将光标放在括号(您的选择)之前或之后,然后按CTRL+ ]。它适用于括号(),方括号[]和大括号{}。从现在开始,您无需在哪里玩Waldo?找到大括号。

在MacOS上,使用CMD+ SHIFT+\


52
仅作为参考,在挪威语键盘上,此快捷方式为Ctrl+ Å(与以下答案中提到的丹麦语键盘相同)。
朱利安

55
此外,在VS 2010和德语键盘上,它是Ctrl+ ´。它是退格符旁边的撇号。
Kjellski 2012年

11
在比利时无精打采者看来,它是ctrl+ ^,这很奇怪,在还带有方[括号(需要AltGr输入)的键上。
Nyerguds 2012年

50
使用CTRL +] + SHIFT选择它们之间的文本
ygaradon

15
在意大利键盘CTRL + I
皮塑


107

我使用的是Visual Studio 2008,您可以自定义此快捷方式的名称。

单击菜单工具 -> 选项 -> 环境 -> 键盘。然后寻找Edit.GotoBrace

这将告诉您当前为此分配了哪些键组合。我认为您可以根据需要更改此设置,但是如果Ctrl+ ]无效,则很有用。


3
这对于查找其他语言键盘的键绑定非常有用。
阿方索·马托斯

是的,如果键盘不同或默认快捷方式已删除,我们应始终使用命令名称来回答命令问题。还请检查Edit.GotoBraceExtend,如果将Ctrl + [something]映射到Edit.GotoBrace,则可能要将Ctrl + Shift + [something]映射到Edit.GotoBraceExtend。
hsandt

1
因为它不是为我所有在2017年VS设置这对我来说非常有用

26

注意:它也适用于#if / #elif / #endif匹配。插入符号必须在#


22

如果由于某种原因对您不起作用,则可能是您的键盘绑定混乱(对我而言不起作用)。您可以足够容易地重新启用绑定-至少如此,我认为:

我尝试了以下过程:

  • 转到菜单工具 -> 选项 -> 环境 -> 键盘
  • 滚动到或搜索命令Edit.GotoBrace
  • 分配所需的快捷方式(我的是空的,所以我输入CTRL   + ]
  • 请务必点击“分配按钮”

我试过了,但还是没用。我重新启动了Visual Studio,但仍然无法正常工作-仅适用于.cs文件,但是我需要它才能适用于.vb文件和文本文件,以及...所有文件!


2
对于VB文件,请使用CTRL+ SHIFT+ UP/DOWN(ref:stackoverflow.com/a/7895072/740639
Walter Stabosz,

@WalterStabosz在这里不工作(VS2015 VB.NET)。
伊万津尼奥(Ivanzinho)



12

在西班牙语键盘上,它是CTRL+ ¿(或CTRL+ ¡)。


2
10分钟后发现WTF是¡,就像写入VS2008选项菜单一样。谢谢!
Roman Rdgz 2012年

11

为了完整起见,在瑞典语键盘上为 CTRL + å

另外,我想的逻辑,但值得一提的 CTRL + shift+ å (对于资本),选择一切括号内,并进入到一个匹配。




10

在我的葡萄牙语键盘和带有EN VS的SO上,如果要选择内部代码,则CTRL+ «导航到匹配的花括号,而CTRL+ SHIFT+ «


9

在我的意大利语键盘上,它是CTRL+ ^







6

转到工具>选项>环境>字体和颜色,选择“括号匹配(矩形)”,然后将“项目背景”更改为例如黄色。这适用于C#括号(){}和[]。


是的,“字体和颜色”和“显示名称”文本框是括号匹配矩形所在的位置。
卡托2014年

如果您像我一样拥有深色主题,则青色(而不是黄色)也将使括号本身更明显。
宝来2015年


5

可以使所有人受益的详细信息(Linux / Win / Mac)

editor.action.jumpToBracket您可以在其中的键盘快捷键菜单/编辑器中将其设置为任意命令。还有一个叫editor.action.selectToBracket默认没有快捷方式的电话(至少在Mac上是)。

等等。

在Mac上editor.action.jumpToBracket开始为Cmd+ Shift+ \ ,我把它改成Ctrl+ ]要与别人说这里行。我希望,我可以用这样做Ctrl+ Shift+ ]到“扩展选择,以匹配支架”。这就是导致我发现上面细节的原因。我设置editor.action.selectToBracketCtrl+ Shift+,]并且得到了我想要的行为。



4

有点相关,但是对于HTML标签:(由于没有内置解决方案,所以Ctrl+J对于HTML标签无效:)

这是我构建的宏的答案(切换),包括关注焦点:

这是演示:

在此处输入图片说明

这是代码。请享用!

Imports System
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Imports EnvDTE90a
Imports EnvDTE100
Imports System.Diagnostics
Imports System.Windows.Forms

Public Module Module2
    Sub beginToEnd()

        'Place the cursor somewhere in the beginning tag, run the macro, to select from beginning to end tag

        DTE.ActiveDocument.Selection.SelectLine()
        Dim objSel As TextSelection = DTE.ActiveDocument.Selection
        Dim topPoint As TextPoint = objSel.TopPoint
        Dim lTopLine As Long = topPoint.Line
        objSel.GotoLine(lTopLine, False)
        '  DTE.ActiveDocument.Selection.StartOfLine()
        DTE.ActiveDocument.Selection.SelectLine()
        Dim line1 As String = DTE.ActiveDocument.Selection.Text()

        If InStr(line1, "/") Then

            ' MsgBox(line1)
            DTE.ExecuteCommand("Edit.ToggleOutliningExpansion")
            DTE.ActiveDocument.Selection.EndOfLine()
            DTE.ActiveDocument.Selection.StartOfLine(vsStartOfLineOptions.vsStartOfLineOptionsFirstText, True)
            objSel.GotoLine(lTopLine, False)
            DTE.ExecuteCommand("Edit.ToggleOutliningExpansion")
            DTE.ExecuteCommand("Edit.ToggleOutliningExpansion")
        Else
            DTE.ExecuteCommand("Edit.ToggleOutliningExpansion")
            DTE.ActiveDocument.Selection.EndOfLine(False)
            DTE.ExecuteCommand("Edit.ToggleOutliningExpansion")
        End If

        DTE.ActiveDocument.Selection.SelectLine()
        Dim line2 As String = DTE.ActiveDocument.Selection.Text()
        Dim objSel3 As TextSelection = DTE.ActiveDocument.Selection
        Dim topPoint3 As TextPoint = objSel3.TopPoint
        Dim lTopLine3 As Long = topPoint3.Line
        objSel.GotoLine(lTopLine3, False)
        DTE.ActiveDocument.Selection.StartOfLine(vsStartOfLineOptions.vsStartOfLineOptionsFirstText, False)
    End Sub
End Module

<Control> +]的标准美国映射在HTML和CSS中也适用于我。两个标签也都突出显示。
Paul Gorbas

3

在德语键盘上的Visual Studio Code中,它是ctrl+ shift+^

但是您必须打开一个具有正确扩展名的文件-例如,它在新的未保存文件中不起作用。


3

在德语键盘是ctrl+ shift+ ^


1
在我的法语键盘上像这样工作!
Sylvain P.

在Visual Studio 2019的Windows \德国,我发现这一点:[CNTRL] + [“]工作
旺朱


2

在西班牙语(西班牙)上,VS2012的键盘是@Keith所说的Ctrl+ ¡,但如果使用Ctrl+ ¿(键入为Ctrl+ Shift+ ¡),则转到Matching Brace加选择两个大括号内的所有代码,然后就不能再转到其他支撑。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.