Snippet или фрагмент кода
Автор: Александр Михновец
Last updated
Was this helpful?
Автор: Александр Михновец
Last updated
Was this helpful?
Набирая код, очень часто приходится повторять однотипные действия – например набирать по буквам Console.WriteLine();
Со временем начинаем замечать подсказки для быстрого введения кода, которое предлагает IntelliSense
Параметры IntelliSense включены по умолчанию. Чтобы отключить их, перейдите в раздел Сервис > Параметры > Текстовый редактор > Все языки и снимите флажок Сведения о параметрах или Автоматический список участников, если вы не хотите использовать функцию Списка участников.
Потом узнаем, что есть комбинация клавиш для быстрого написания Console.WriteLine();
- cw и 2 раза клавиша Tab, и дело идет гораздо быстрее.
У Microsoft Visual Studio есть целый комплект сниппетов – часто встречающихся комбинаций клавиш для быстрого ввода. Найти их перечень можно в Средства – Диспетчер фрагментов кода или набрав сочетание Ctrl+K, Ctrl+B
Здесь представлены все стандартные сниппеты, которые есть для языка C#
.
Т.е. набрав сочетание клавиш, указанное выше, например, for
и нажав 2 раза клавишу Tab
Основной скелет цикла for появится в коде и его останется только заполнить:
Обратите внимание, что часть кода, которую надо заменить – сразу подсвечивается. Использование snippet’ов сокращает в разы время набора часто повторяющихся фрагментов кода.
Освоившись с применением snippet начинаем понимать, что стандартных маловато будет. И нам срочно нужен фрагмент кода для Console.ReadLine();
которого нет в перечне.
Открываем диспетчер фрагментов кода:
Выбираем папку Visual C#
:
Копируем путь к папке:
Переходим в указанное место через Проводник / Total Commander / или что там у Вас для этого:
Копируем cw.snippet
в новую папку cr
, где будем изменять файл под себя. Переименовываем файл в cr.snippet
и открываем в текстовом редакторе:
В строчке <Code Language="csharp"><![CDATA[$SystemConsole$.WriteLine($end$);]]>
заменяем Write
на Read
и переносим $end$
за точку с запятой. Получаем такую запись: <Code Language="csharp"><![CDATA[$SystemConsole$.ReadLine();$end$]]>
В <Title>cw</Title>
меняем на <Title>cr</Title>
В <Shortcut>cw</Shortcut>
меняем на <Shortcut>cr</Shortcut>
В <Description>Фрагмент кода для Console.WriteLine</Description>
меняем на <Description>Фрагмент кода для Console.ReadLine</Description>
Авторство <Author>Microsoft Corporation</Author>
меняем на себя любимого <Author>IJunior</Author>
Осталось импортировать новый snippets в Microsoft visual studio.
Средства – Диспетчер фрагментов кода или сочетание Ctrl+K, Ctrl+B:
Язык CSharp
, расположение MyCodeSnippets, кнопка Импорт.
Указываем путь к нашему созданному файлу и нажимаем кнопку Открыть.
Переходим в Microsoft Visual Studio, запускаем проект и вводим cr
и 2 раза клавишу Tab
Меня не устраивает стандартный snippet cw для Console.WriteLine()
, т.к. все время использую интерполяцию. Делать новый фрагмент кода ради добавления в него Console.WriteLine($””)
не имеет смысла, поэтому будем модифицировать стандартный snippet.
Для начала сделаем резервное копирование стандартного сниппета cw
на случай, если что-то пойдет не так.
Переходим к месту хранения сниппетов и копируем его оттуда в свою отдельную папку резервных копий и папку для препарирования.
Так выглядел код до модификации:
Так после модификации:
Единственной загвоздкой было выведение знака $, который воспринимался, как внутренняя команда. Пришлось сделать для него отдельный литерал.
Добавил строчки:
Изменил:
<Code Language="csharp"><![CDATA[$SystemConsole$.WriteLine($end$);]]>
На
<Code Language="csharp"><![CDATA[$SystemConsole$.WriteLine($Interpolation$"$end$");]]>
сс - Console.Clear();
cr - Console.ReadLine();
crk - Console.ReadKey();
cw - Console.WriteLine($"");
cww - Console.WriteLine($"{}");