【问题标题】:Visual Studio Jump to Beginning of FunctionVisual Studio 跳转到函数的开头
【发布时间】:2015-01-06 18:53:37
【问题描述】:

我知道 Ctrl+} 会带你到 Visual Studio 中的相应大括号,但是说我在一个巨大的函数中间,我没有'不知道顶部或底部在哪里,有直接进入函数声明的快捷方式吗?

void function()
{
//so many lines of code
//can't see the top or the bottom curly brace
//can i get to the top of the function with a shortcut?
}

【问题讨论】:

标签: visual-studio keyboard-shortcuts


【解决方案1】:

我全新安装了 VS2017。从 15.9.1 开始,我的默认设置是 Alt+Shift+[

这是EditorContextMenus.Navigate.GoToContainingBlock 的快捷方式。因此,如果您有几个块层深,您可能需要多次执行此快捷方式,但它会带您到达您想去的地方。

【讨论】:

    【解决方案2】:

    Alt+Ctrl+UP,Tab,Tab,Enter
    此序列将引导您完成项目选择器 > 范围选择器 > 功能选择器 > 当前功能。

    Ctrl+M,Ctrl+M
    此序列将在折叠/展开当前块之间切换。
    将光标置于该函数立即包含的任何行上。坍塌。将光标放在折叠函数的末尾,即{ ... } 之后。展开函数以到达最后一个大括号。

    注意:
    如果你很难找到直接被函数包围的行(例如,当函数有很多嵌套块时),你总是可以回到开头折叠函数。

    【讨论】:

    • 所以你是说你应该“去开始折叠功能”以便能够......去功能的开始?不过我喜欢第一个解决方案。
    • @Andrew,我的回答中的“注释”部分是指如何轻松找到大型函数的底部。
    • 哦,所以你的意思是“紧接在函数之后”而不是“立即被函数包围”。 :)
    【解决方案3】:

    更新

    随着 Visual Studio 的最新更新,现在 EditorContextMenus.Navigate.GoToContainingBlock 的默认键盘快捷键是 Shift+Alt+[


    旧答案:

    Visual Studio 2017 版本 15.8.0 带有一个新的快捷键 Ctrl + Alt + UpArrow - 转到封闭块。

    转到封闭块(Ctrl + Alt + UpArrow)可以让您快速 向上导航到封闭代码块的开头。

    Source

    如果您在函数内部,此命令还允许移动到函数声明。

    If shortcut doesn't work for you

    【讨论】:

    • 在 VS 15.9.4 Ctr+Alt+Up 中突出显示项目选择器
    【解决方案4】:

    对于 VSCode 爱好者来说,这个组合键将带你到功能的顶部:

    Ctrl-Shift-. 其次是ENTER

    对于 MAC 用户:

    Cmd-Shift-. 其次是ENTER

    【讨论】:

    • 你刚刚改变了我的生活。在这里,我认为面包屑栏很傻。
    【解决方案5】:

    我通常双击位于代码左侧的白线。 它关闭了函数,但也将您带到了函数的声明处。

    【讨论】:

    • 在这种情况下,您还可以使用键盘快捷键Ctrl+M, Ctrl+M。或者(如果您使用不同的键盘方案)查看命令 Edit.ToggleOutliningExpansion 的正确快捷方式
    • 双击行关闭块,而不是函数。
    【解决方案6】:

    您可以使用Macros for Visual Studio 扩展来做到这一点。

    这是宏的代码:

    // BeginningOfFunction moves the caret to the beginning of the containing definition.
    
    var textSelection = dte.ActiveDocument.Selection;
    
    // Define Visual Studio constants
    var vsCMElementFunction = 2;
    
    var codeElement = textSelection.ActivePoint.CodeElement(vsCMElementFunction);
    
    
    if (codeElement != null)
    {
        textSelection.MoveToPoint(codeElement.GetStartPoint());
        dte.ActiveDocument.Activate();
    }
    

    它是扩展的示例宏之一。对其进行了一些编辑,因为由于某种原因,示例对我不起作用。您可以通过将codeElement.GetStartPoint() 更改为codeElement.GetEndPoint() 来结束函数。

    【讨论】:

      【解决方案7】:

      我在 Visual Studio 中发现了一个技巧:

      将光标放在空白处获取上下文(函数名称),复制函数名称,然后单击将列出所有函数的下拉箭头,粘贴函数名称,回车。那么你就在那个函数的开始处!

      【讨论】:

      • 只是添加 .单击任意位置->在右上角的下拉列表中查看方法的名称->按下拉列表并再次选择该方法。
      • 只需单击该下拉菜单并按 ENTER 即可,无需复制和粘贴任何内容。或者,您可以将 ENTER 替换为将鼠标移动到下方几个像素以选择第一个元素(当前方法)并单击。
      猜你喜欢
      • 1970-01-01
      • 2011-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-19
      • 2015-01-08
      • 1970-01-01
      相关资源
      最近更新 更多