Редактор кода в Visual Studio
153Программы --- Visual Studio --- Редактор кода
До сих пор мы рассказывали о том, как начать работу с системой Visual Studio 2013 и как удобно настроить интегрированную систему разработки. Далее мы научим вас эффективно использовать некоторые встроенные команды, комбинации клавиш, а также вспомогательные инструментальные окна. Это поможет вам писать программы и проектировать формы.
Разработчики проводят значительное время, работая над текстами программ. Следовательно, очень важно уметь правильно скомпоновать код и перемещаться по его тексту. В системе Visual Studio 2013 реализован совершенно новый редактор кода, основанный на платформе визуализации WPF (Windows Presentation Foundation). Он предоставляет разработчикам множество новых возможностей в дополнение к тем, которые были унаследованы от предыдущих версий системы.
Компоновка окна редактора кода
Открывая исходный файл для редактирования, вы работаете с окном редактора кода, показанным на рисунке ниже. Основой этого окна является окно кода, в котором отображается текст программы:
Над окном кода расположены два раскрывающихся списка, которые помогут вам перемещаться по файлу кода. В первом из этих списков перечислены классы, содержащиеся в файле кода, а во втором — члены класса, выбранного из первого списка. Классы и их члены перечислены в алфавитном порядке. Это облегчает поиск метода или определения члена класса в файле.
Когда вы редактируете программу в окне редактора кода, строки кода, которые были модифицированы с момента открытия файла, сопровождаются метками в левом поле — желтыми для несохраненных изменений и зелеными для сохраненных.
Регионы кода
Класс считается разработанным правильно, если он предназначен для единственной цели и не слишком сложный или длинный. Однако в некоторых ситуациях вы будете вынуждены реализовать так много интерфейсов, что ваш файл кода станет громоздким. Существует множество возможностей, позволяющих справиться с этой задачей, например, разделить код на фрагменты, записанные в разных файлах, или свернуть его фрагменты с помощью регионов (regions), облегчив навигацию по программе.
Использование частичных классов (т.е. классов, определение которых разбросано по нескольким файлам) позволяет в ходе проектирования записывать код в физически разные файлы, которые в совокупности представляют собой логически единый класс. Преимущество использования отдельных файлов заключается в эффективном группировании всех связанных друг с другом методов, например, методов, реализующих интерфейс. В то же время эта стратегия имеет недостаток: перемещение по коду требует постоянного переключения между его файлами.
В качестве альтернативы можно использовать именованные регионы кода (code regions), позволяющие сворачивать разделы кода, которые в данный момент не используются. На рисунке ниже показан один регион кода. Если щелкнуть на знаке "минус", расположенном ниже директивы #region, то можно сжать регион в одну строку, а если на знаке "плюс" - то снова развернуть его:
Не обязательно разворачивать регион, чтобы увидеть код, который в нем записан. Просто переместите курсор мыши над регионом; и вы увидите код в контекстном окне указателя.
Сворачивание кода
Кроме регионов, которые необходимо определять вручную, в системе Visual Studio 2013 есть структуры кода (outlines), позволяющие автоматически сворачивать методы, комментарии и определения классов. Режим автоматического сворачивания включен по умолчанию. Если он был отключен, то его можно снова включить с помощью команды Edit --> Outlining --> Start Automatic Outlining.
На рисунке ниже показаны четыре сворачиваемых региона. Один из них называется Constructor, а остальные три автоматические структуры кода позволяют свернуть класс, XML-комментарии и метод конструктора (который был сжат). Автоматические структуры можно сворачивать и разворачивать так же, как и регионы, которые определяются вручную.
Меню Edit --> Outlining содержит большое количество команд, помогающих переключать режимы сворачивания, то сжимая весь файл до определений методов и свойств (Edit --> Outlining --> Collapse to Definitions), то разворачивая все свернутые фрагменты кода вновь (Edit --> Outlining --> Stop Outlining). Другой способ разворачивать и сворачивать регионы основан на использовании комбинации клавиш <Ctrl+M>, <Ctrl+M>. Эта комбинация позволяет переключаться между двумя режимами.
Разработчикам, работающим на языке C# , знаком трюк, основанный на комбинации клавиш <Ctrl+]>, которая позволяет легко перемещаться от конца региона, фрагмента или блока к его началу, и наоборот.
Форматирование кода
По умолчанию система Visual Studio 2013 помогает писать читабельный код, автоматически выравнивая текст. Однако ее можно настроить так, чтобы контролировать внешний вид кода. Общим для всех языков программирования является возможность управлять событиями, которые должны произойти при создании новой строки. На рисунке ниже показан узел Tabs, расположенный под узлом Text Editors All Languages диалогового окна Options. В этом узле определены значения, заданные по умолчанию для всех языков. Эти значения можно изменить, используя узел Basic --> Tabs (для языка VB.NET), C# --> Tabs, или другие узлы, соответствующие другим языкам.
По умолчанию для языков C# и VB.NET включен режим интеллектуального выравнивания, который, помимо прочего, автоматически осуществляет выравнивание при открытии и закрытии вложений. Интеллектуальное выравнивание доступно не для всех языков. В таких ситуациях вместо него используется выравнивание блоков.
Если вы работаете с маленьким экраном, то, возможно, захотите уменьшить шаги табуляции и размеры отступов, чтобы оптимизировать использование экрана. Задавая шаги табуляции и размеры отступов одинаковыми, вы легко сможете выравнивать свой код с помощью клавиши табуляции. Интересно, что это диалоговое окно дает разработчикам, работающим на языке C#, много возможностей для управления компоновкой своего кода. В узле VB Specific есть только один флажок Pretty listing (reformatting) of code, который при включении позволяет поддерживать единообразный внешний вид кода и освобождает пользователя от необходимости заботиться о методах выравнивания, свертках, определениях классов и пространствах имен. С другой стороны, разработчики, работающие на языке C#, могут контролировать практически каждый аспект форматирования кода с помощью дополнительных узлов.
Режим Smart Indenting в системе Visual Studio практически всегда прекрасно справляется с автоматическим выравниваем кода по мере его ввода или вставки в окно редактора кода, но иногда встречаются плохо отформатированные фрагменты кода, которые трудно читать. Для того чтобы система Visual Studio переформатировала весь документ и установила позиции фигурных скобок и отступов строк, выберите команду Edit --> Advanced --> Format Document или нажмите комбинацию клавиш <Ctrl+K>, <Ctrl+D>. Для того чтобы переформатировать только что выделенный блок кода, выберите команду Edit --> Advanced --> Format Selection или нажмите комбинацию клавиш <Ctrl+K>, <Ctrl+F>.
Для того чтобы выровнять целый блок кода на одном уровне, не изменяя каждую строку по отдельности, выберите блок и нажмите клавишу <Tab>. В начало каждой строки будет вставлен символ табуляции. Для того чтобы отменить выравнивание блока по одному уровню, выделите его и нажмите комбинацию клавиш <Shift+Tab>.
Вы могли заметить, что команды Tabify/Untabify Selected Lines в меню Edit --> Advanced сильно отличаются от команды Format Selection. Эти команды превращают ведущие пробелы в символы табуляции, и наоборот, а не вычисляют заново отступы, как это делает команда Format Selection.
Перемещение вперед и назад по коду
Когда вы перемещаетесь по элементам интерфейса и между ними, система Visual Studio 2013 отслеживает вашу позицию почти так же, как веб-браузер отслеживает сайты, которые вы посетили. Используя команды Navigate Forward и Navigate Backward из меню View, вы сможете легко перемещаться вперед и назад между разными элементами проекта, в которые внесли изменения. Для перемещения назад используется комбинация клавиш <Ctrl+->, а для перемещения вперед - <Ctrl+Shift+->.
Дополнительные свойства редактора кода
Редактор кода в системе Visual Studio имеет очень много возможностей, которые трудно исчерпывающим образом описать в этой статье. Однако наиболее полезные из них мы приводим ниже.
Подсветка ссылок
Подсветка ссылок - интересное свойство системы Visual Studio, которое появилось в версии 2010. Система выделяет все вхождения имени элемента кода в области видимости (например, имени метода или свойства), на которое указывает курсор. Благодаря этому легче будет найти места, где это имя еще используется в коде. Вы сможете легко перемещаться между этими местами с помощью комбинации клавиш <Ctrl+Shift+Up/Down>.
Укрупнение кода
С помощью комбинации <Ctrl+Mouse Wheel> можно увеличивать и уменьшать масштаб кода (по существу, увеличивая и уменьшая текст). Это свойство может оказаться особенно полезным, когда необходимо продемонстрировать код группе людей. В левом нижнем углу окна редактора кода есть раскрывающийся список, позволяющий выбрать заранее заданные уровни увеличения текста.
Сворачивание текста
Чтобы включить опцию сворачивания текста в окне редактора кода, выберите команду Tools --> Options, откройте узел Text Editor, выберите подузел All Languages и установите флажок Word Wrap. Можете также отобразить глиф стрелки возврата (return arrow) в том месте, где текст должен быть свернут, установив флажок Show Visual Glyphs for Word Wrap, расположенный ниже флажка Word Wrap.
Чтобы применить эти установки к текущему проекту, выберите команду Edit --> Advanced --> Word Wrap.
Номера строк
Для того чтобы отслеживать положение курсора в файле, полезно пронумеровать строки в окне редактора кода. Для того чтобы включить режим нумерации строк, выберите команду меню Tools --> Options, откройте узел Text Editor, выберите узел All Languages и установите флажок Numbers:
Разделение окна
Иногда нужно разделить один и тот же файл кода на две части и просматривать одновременно в разных окнах. Можете разделить активное окно редактора на верхнюю и нижнюю части с помощью линии разбивки (splitter bar). Эти окна можно прокручивать независимо друг от друга и отображать в них содержимое одного и того же файла в одно и то же время.
Для того чтобы разделить окно редактора кода, выберите команду Split из меню Window. В качестве альтернативы можно перетащить метку манипулятора (расположенную прямо над панелью вертикальной прокрутки), в позицию, где должна располагаться линия разбивки.
Чтобы настроить размеры каждого окна, достаточно передвинуть линию разбивки вверх или вниз. Удалить линию разбивки просто: дважды щелкните на ней или выберите команду Remove Split из меню Window.
Свободное перемещение окон редактора кода
В версии Visual Studio 2010 появилось новшество, которого долго ожидали программисты, работающие с несколькими дисплеями, - возможность "освобождать" окна редактора кода (и инструментальные окна) и перемещать их за пределы главного окна системы Visual Studio (как показано на рисунке ниже) и даже на другой дисплей. Это позволяет одновременно работать с несколькими окнами редактора кода, расположенными на разных дисплеях. Для того чтобы освободить окно, сначала убедитесь, что оно находится в фокусе, а затем выберите команду Float из окна Window. В качестве альтернативы можно щелкнуть правой кнопкой мыши на заголовке окна и выбрать команду Float из контекстного меню или щелкнуть и перетащить закладку для этого окна (при этом окно освобождается) и перетащить его в то место, где вы хотите его расположить.
Когда разделение окна редактора кода на две части для одновременного просмотра разных фрагментов одного и того же файла (см. предыдущий раздел) оказывается неудобным, можно вместо этого использовать плавающее окно, разместив его, например, на другом дисплее (если вы работаете с несколькими дисплеями). Для этого можно воспользоваться специальным трюком (поскольку двойной щелчок мышью на файле в окне Solution Explorer просто активизирует существующее окно редактора кода для данного файла) - выбрать команду New Window в меню Window. Эта команда откроет просматриваемый в данный момент файл в новом окне, которое можно сделать свободным и разместить в любом месте.
Создание групп закладок
Если у вас нет нескольких мониторов, то все равно есть возможность открыть одновременно несколько окон редактора кода. Для этого следует создать группы закладок и создать из них мозаику, чтобы отобразить одновременно. Каждая закладка окна редактора кода в этой группе отображается как отдельный элемент мозаики. Таким образом, можно создать несколько групп закладок. Их количество ограничено лишь размерами экрана, на котором они должны размещаться. Элементы мозаики можно размещать как вертикально, так и горизонтально, правда, применить эти два способа одновременно невозможно.
Для того чтобы начать этот процесс, откройте в окне редактора кода несколько закладок. Убедитесь, что закладка окна редактирования кода находится в фокусе, а затем выберите команду Window --> New Horizontal Tab Group или Window --> New Vertical Tab Group из открывшегося меню. В результате будет создана новая группа закладок и мозаика для них:
В качестве альтернативы можно просто перетащить закладку вниз или за существующую и прикрепить ее в этой позиции, получив тот же самый результат. Можно также перетаскивать закладки из одной группы закладок в другую, используя команды Window --> Move to Next Tab Group и Window --> Move to Previous Tab Group. Эти команды доступны также в меню, которое открывается после щелчка правой кнопкой мыши на закладке. Для того чтобы восстановить пользовательский интерфейс, имеющий только одну группу закладок, переместите закладки из новой группы (или групп) закладок назад в исходное место, и мозаика исчезнет.
Несколько панелей Solution Explorer
Если вы работаете на нескольких мониторах, то в версиях Visual Studio 2008 и ниже вы могли заметить, что нельзя открыть несколько панелей Solution Explorer. В Visual Studio 2013 этого ограничения не существует. Щелкните на одном из элементов в окне Solution Explorer правой кнопкой мыши и выберите в контекстном меню команду New Solution Explorer view. При выборе этой команды откроется новое окно Solution Explorer, которое будет содержать выбранный элемент. Это очень удобно при работе на нескольких мониторах.
Дополнительные возможности
Для того чтобы достичь действительно высокой производительности труда, полезно знать о многочисленных скрытых возможностях редактора кода, которые позволяют сэкономить массу времени. Рассмотрим некоторые из наиболее полезных команд, которые скрыты в редакторе кода.
"Закомментирование" и "раскомментирование" блока кода
Часто возникает необходимость "закомментировать" блок кода или "раскомментировать" его. При этом не хотелось бы добавлять символы комментариев в начало каждой строки или удалять их оттуда, особенно, если этих строк в блоке много. Разумеется, в языке C# можно свернуть блок кода, разместив его между символами /* и */, чтобы "закомментировать", но такой тип комментариев в языке Visual Basic отсутствует. Кроме того, даже в языке C# возникают проблемы, когда требуется "закомментировать" блок, который уже содержит в себе подобные комментарии.
В системе Visual Studio есть простое средство для "закомментирования" и "раскомментирования" блоков. Для этого следует выделить блок, затем выбрать команду Edft --> Advanced --> Comment Selection, чтобы "закомментировать" его, или Edit --> Advanced --> Uncomment Selection, чтобы "раскомментировать" его. Проще всего выбрать эти команды (скорее всего, именно их вы будете чаще всего использовать) с помощью комбинаций клавиш. Нажмите комбинации клавиш <Ctrl+K>, <Ctrl+C>, чтобы "закомментировать" блок кода, и <Ctrl+K>, <Ctrl+U> - чтобы "раскомментировать" его. Еще одним простым средством для доступа к этим командам является инструментальная панель Text Editor.
Выделение блока
Выделение блока, которое называют также выделением окна (box selection), столбца (column selection), прямоугольника (rectangle) или вертикального текста (vertical text selection), как показано на рисунке ниже, подразумевает выделение текстового блока, а не строк (процедура, которая называется выделением потока (stream selection)). Для того чтобы отметить текстовый блок, нажмите клавишу <Alt> и не отпускайте ее, пока выделяете текст мышью, или используйте комбинацию клавиш <Shift+Alt+Arrow>. Это свойство может оказаться полезным, когда необходимо удалить часть вертикально выровненного кода (например, префикс в объявлениях переменных):
Многострочное редактирование
Многострочное редактирование - это новое свойство, появившееся в системе Visual Studio 2010 и расширяющее возможность выделения блоков. В предыдущих версиях системы после выделения вертикального текстового блока вы могли только удалять, вырезать или копировать блок. Теперь в системе Visual Studio после выделения вертикального текстового блока можно в каждой строке набрать текст, который заменит выделенный фрагмент. Это удобно, например, когда требуется заменить уровень доступа к группе переменных с private на protected.
Можно также вставить текст одновременно в несколько строк, создав блок с нулевой шириной и просто начав печатать.
Кольцевой буфер обмена
Система Visual Studio отслеживает последние двадцать фрагментов текста, которые были скопированы или вырезаны в буфер обмена. Для того чтобы вставить текст, который был ранее скопирован в буфер обмена, но был перезаписан, вместо обычной комбинации <Ctrl+V>, предназначенной для вставки, можно использовать комбинацию <Ctrl+Shift+V>. Нажав клавишу <V> и удерживая клавиши <Ctrl+Shift>, можно выполнять циклы просмотра элементов буфера обмена.
Полноэкранный режим
Можете максимизировать представление кода, подлежащего редактированию, выбрав команду View --> Full Screen или нажав комбинацию клавиш <Shift+Alt+Enter>, чтобы увеличить до максимума окно редактора кода, скрыв другие инструментальные окна и панели. Для того чтобы вернуться в обычный режим, снова нажмите комбинацию клавиш <Shift+Alt+Enter> или щелкните на кнопке переключения Full Screen, добавленной в конце панели меню.
Переход к определению
Для того чтобы быстро перейти к определению класса, метода или члена, расположенного ниже курсора, щелкните правой кнопкой мыши и выберите команду Go То Definition или нажмите клавишу <F12>.
Поиск всех ссылок
В системе Visual Studio 2013 есть возможность найти точку вызова метода или ссылки на свойство, щелкнув правой кнопкой мыши на его определении и выбрав команду Find All References в контекстном меню или поместив курсор на определение метода и нажав комбинацию клавиш <Shift+F12>. Эти команды открывают инструментальное окно Find Symbol Results, содержащее позиции, в которых существуют ссылки на указанный метод или свойство. Теперь можно дважды щелкнуть на ссылке в окне результатов, чтобы переместиться на искомую позицию в окне редактирования кода.
Это свойство несколько устарело после появления нового окна Call Hierarchy, которое будет рассмотрено позже. Однако оно по-прежнему позволяет быстро находить используемый метод без перемещения по окну Call Hierarchy.