如何在Visual Studio中跳转到闭合大括号?

4

有没有一种方法可以快速跳出一个代码块,在当前代码块的右括号 } 后面?

让我解释一下。

假设有一个方法:

private void Button_Click(object sender, EventArgs e)
{
    if (enableCheckbox.Checked == true)
    {
        if (labelToChange.Text == "Right")
        {
            labelToChange.Text = "Left";
        }
        else
        {
            labelToChange.Text = "Right";
        }
    }
}

我的光标在labelToChange.Text = "Left";这一行。

我想通过按Ctrl+]跳转到当前if (labelToChange.Text == "Right")代码块的右括号}

然后,如果我再次按Ctrl + ],我希望它跳转到if(enableCheckbox.Checked == true)代码块的右括号}

然后,如果我连续第三次按Ctrl + ],我希望它跳转到方法private void Button_Click(object sender, EventArgs e)的代码块的右括号}

以下是我想要实现的动画效果: enter image description here

我设法在WebStorm和PhpStorm中使用宏实现了这种行为:

enter image description here

它会跳到代码块的结尾,然后跳到该行的结尾,所以它停留在右括号外。

当我在处理多个代码块(if/else、编写方法等)时,这非常方便。 我在WebStorm和PhpStorm中一直使用它。

Visual Studio有没有办法实现这一点呢?

我知道默认的Ctrl+]快捷键,问题是Edit.GoToBrace命令只有在光标位于左括号{处时才会跳转到右括号},而不是在代码块内任何其他位置。

PS 是的,我确实查看了类似的主题:

没有一个可以帮助我找到解决问题的方法,请帮忙。 在此输入图像描述


2
ctrl+} 用于跳转到闭合和开放的大括号位置。 - programtreasures
2
我知道默认的 Ctrl+] 快捷键,但 Edit.GoToBrace 命令的问题在于它只会在光标位于开括号 { 时才跳转到对应的闭括号 },而不管光标是否在代码块内的其他位置。 - KulaGGin
如果有人感兴趣,可以提交一个功能请求:https://youtrack.jetbrains.com/issue/RSRP-467830 - KulaGGin
非常好,我很感激。 - programtreasures
1个回答

2

更新

根据这个回答

我正在使用VS2017,并测试了默认的快捷键:Shift+Alt+[,它可以跳转到包含块的头部。 这个默认快捷键是用于EditorContextMenus.Navigate.GoToContainingBlock。 对我来说它有效。

在VS2019中仍然有效。


我发现了一个Visual Studio扩展程序,可以实现增强版的“Edit.GotoBrace”命令。

请查看一下。 这里是FeinBrace

我已经在我的IDE(Visual Studio 2017)中进行了测试。
它可以用于以下功能:

  1. 跳转到块的开头(Alt+[, [)
  2. 跳转到块的结尾(Alt+], ])

其他功能不起作用。

该扩展程序已经有一段时间没有更新了。还有更多相关的Visual Studio Code扩展程序。但我不知道它是否适用于Visual Studio。


1
仅包含链接的答案将在未来被删除,请发布带有代码和说明的答案。该内容与编程有关。 - Jaimil Patel
@JaimilPatel 谢谢你的友善提醒。我会发布更多的解释和经验。 - Yang Jk
可以运行,但仅限于2015版本。我正在使用2019版本。 - KulaGGin
不幸的是,当在函数级别使用EditorContextMenus.Navigate.GoToContainingBlock时,它会跳转到函数的开头,而不是函数代码块的开头(即它不会将光标放在左花括号上)。这意味着您无法使用Ctrl+]来跳转到函数的结尾。 - John Doggett

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