Ответ 1
Я обычно дважды нажимаю белую линию, расположенную слева от кода. Он закрывает функцию, но также выводит вас на объявление функции.
Я знаю, что 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?
}
Я обычно дважды нажимаю белую линию, расположенную слева от кода. Он закрывает функцию, но также выводит вас на объявление функции.
Alt+Ctrl+UP
, Tab
, Tab
, Enter
Эта последовательность переместит вас через Выборщик проекта> Выбор области действия> Выбор функции> Текущая функция.
Ctrl+M
, Ctrl+M
Эта последовательность будет переключаться между свернуть/развернуть текущий блок.
Поместите курсор в любую строку, которая немедленно заключена в функцию. Collapse. Поместите курсор в конец свернутой функции, т.е. после {... }
. Разверните функцию, чтобы получить ее последнюю скобку.
Замечания:
Если у вас возникли трудности с нахождением строки, непосредственно закрытой функцией (например, когда функция имеет много вложенных блоков), вы всегда можете перейти к началу, чтобы свернуть функцию.
У меня свежая установка VS2017. По состоянию на 15.9.1 для меня по умолчанию установлено значение Alt + Shift + [.
Это ярлык для EditorContextMenus.Navigate.GoToContainingBlock
. Таким образом, вам может потребоваться выполнить этот ярлык несколько раз, если вы находитесь в нескольких слоях блока, но он приведет вас туда, куда вы хотите.
Вы можете сделать это с Макросами для расширения 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()
.
Обновление
С последними обновлениями Visual Studio теперь по умолчанию сочетание клавиш для EditorContextMenus.Navigate.GoToConistingBlock имеет значение Shift + Alt + [
Старый ответ:
Visual Studio 2017 версии 15.8.0 поставляется с новым сочетанием клавиш Ctrl + Alt + UpArrow - Перейти к включенному блоку.
Перейти в блок вложения (Ctrl + Alt + UpArrow) позволяет быстро перейти к началу блока кода.
Эта команда также позволяет перейти к объявлению функции, если вы находитесь внутри функции.
Я нашел один трюк в визуальной студии:
Поместите курсор на пустой, чтобы получить контекст (имя функции), скопируйте имя функции, затем щелкните стрелку раскрывающегося списка, в которой будут перечислены все функции, вставьте имя функции, введите. Тогда вы находитесь в начале этой функции!