Как попасть в раздел: Preferences -> Editor -> Live Templates -> C# и мы видим список. (Не путать Live Templates с File Templates) Live Templates - это предустановленные или пользовательские сниппеты кода, которые можно быстро вставить в свой код. То есть пишешь команду прямо, где код и редактор предлагает подставить шаблон кода. Например, itar Предустановленные сниппеты: prop - создает свойство propg - создает с приватным set sfid - создать серилизируемое поле (переименовал, было sfield) ctor - создает конструктор ear - создает пустой массив Мои сниппеты: Fid - создает поле Med - создает метод Medr - создает метод с return ## Разбор интерфейса ![Раздел Live Templates в Rider](Раздел%20Live%20Templates%20в%20Rider.png) ### ### Цифра 1 на скриншоте Создает новый сниппет. ### Опция "Reformat" (Переформатировать) Используется для автоматического форматирования кода в соответствии с заданными стилем и соглашениями о форматировании. Когда вы вставляете живой шаблон (live template) и эта опция включена, Rider автоматически форматирует вставленный код. Это может включать в себя корректировку отступов, пробелов, расположения скобок и других элементов форматирования, чтобы они соответствовали вашим настройкам стиля кода. ### Опция "Shorten qualified references" (Сократить квалифицированные ссылки) Используется для автоматического сокращения полных имен классов до их коротких имен, если это возможно. Когда вы вставляете живой шаблон (live template) и эта опция включена, Rider автоматически заменяет полные имена классов на их короткие имена, если в данном контексте это не вызовет конфликтов имен. Например, если у вас есть следующий код: ![Раздел Live Templates в Rider-1](Раздел%20Live%20Templates%20в%20Rider-1.png) И вы включили опцию "Shorten qualified references", Rider автоматически преобразует его в: ![Раздел Live Templates в Rider-2](Раздел%20Live%20Templates%20в%20Rider-2.png) Это делается при условии, что в данном контексте нет другого класса с именем Console, который мог бы вызвать конфликт имен. Эта опция помогает сделать код более читаемым и компактным, убирая ненужные полные имена классов. ### Use in Позволяет вам определить, как именно будет использоваться ваш шаблон. Вот что означают эти три опции: * "Generation": Этот шаблон будет доступен для вставки в код. Это значит, что вы можете использовать его для генерации новых фрагментов кода, например, для создания нового класса или метода. * "Surround": Этот шаблон будет доступен для обрамления уже существующего кода. Это значит, что вы можете выделить фрагмент кода и использовать шаблон, чтобы обернуть этот код в определенную структуру, например, в условный оператор или цикл. * "Both": Этот шаблон будет доступен и для генерации, и для обрамления кода. Это значит, что вы можете использовать его как для вставки нового кода, так и для обрамления уже существующего кода. ### "Mnemonic" (Мнемоника) Это короткое слово или фраза, которую вы можете использовать для быстрого вызова вашего шаблона. Представляет собой одно слово без пробелов. Использование запятых или пробелов в мнемониках не поддерживается. Например, если у вас есть шаблон для создания нового класса в C#, его мнемоника может быть "newclass" или "nc". Когда вы начинаете вводить "newclass" или "nc" в редакторе кода, Rider предложит вам этот шаблон. ### Окошко Edit Variables Открывается, нажав на кнопку (под цифрой 2 на скриншоте выше) Если переменная помечена как "Editable" (то есть галка установлена), это означает, что вы можете ввести или изменить ее значение после вставки сниппета в ваш код проекта. ![Раздел Live Templates в Rider-3](Раздел%20Live%20Templates%20в%20Rider-3.png) _Опция "Change macro" (Изменить макрос)_ Позволяет вам присвоить макрос переменной в вашем шаблоне. Макросы могут автоматически генерировать или изменять значения переменных на основе определенных условий или контекста. Например, вы можете использовать макрос, чтобы автоматически заполнить переменную `$CLASSNAME
именем текущего класса или переменную `$DATE
- текущей датой. Чтобы изменить макрос для переменной, вы должны: * Выбрать переменную в списке. * Нажать на кнопку "Change macro". Затем вы сможете выбрать из списка доступных макросов. Каждый макрос имеет описание, которое поможет вам понять, что он делает. Использование макросов может существенно увеличить мощь и гибкость ваших живых шаблонов, позволяя вам автоматизировать еще больше аспектов написания кода. ### Опция "Show in context action" (Показать в контекстном действии) Будет ли ваш живой шаблон (live template) отображаться в контекстном меню действий (обычно вызывается нажатием Alt+Enter). Если эта опция включена, ваш шаблон будет отображаться в списке действий, которые вы можете выполнить в текущем контексте. Это может быть полезно, если ваш шаблон применим к определенным типам кода или структурам, и вы хотите иметь возможность быстро вставить его, когда работаете с таким кодом. Например, если у вас есть шаблон для генерации метода ToString(), вы можете включить эту опцию, и шаблон будет отображаться в контекстном меню действий, когда вы работаете с классом. Таким образом, вы сможете быстро вставить этот метод, не ища шаблон вручную. ## Переменные Вы можете использовать различные предопределенные переменные при создании live templates. Для предопределенных переменных не нужно дополнительно настраивать Macros. А если создаете собственные, то нужно. Вот некоторые из них: * $END$: Эта переменная определяет позицию курсора после вставки шаблона. * $SELECTION$: Эта переменная заменяется на текущий выделенный текст при вставке шаблона. Если ничего не выделено, она остается пустой. * $DATE$, $TIME$, $YEAR$, $MONTH$, $DAY$, $HOUR$, $MINUTE$, $SECOND$: Эти переменные заменяются на текущую дату и время или их компоненты. * $USER$: Эта переменная заменяется на имя текущего пользователя. * $NAME$, $CLASS$, $METHOD$ и т.д.: Эти переменные могут быть использованы для вставки имени файла, класса, метода и т.д. Вы можете определить их значения при вставке шаблона. * $ClipboardContent$: Эта переменная заменяется на текущее содержимое буфера обмена. * $PROJECTNAME$: Эта переменная заменяется на имя текущего проекта. * $PRODUCT_NAME$: Эта переменная заменяется на имя продукта JetBrains, например, "Rider" или "IntelliJ IDEA". * $NAMESPACE$: Эта переменная заменяется на текущее пространство имен. * $DSGNAMESPACE$: Эта переменная заменяется на пространство имен, связанное с текущим файлом дизайнера (например, файлом формы Windows Forms). * $DSGCLASS$: Эта переменная заменяется на имя класса, связанного с текущим файлом дизайнера. * $DSGPARENTTYPE$: Эта переменная заменяется на имя базового типа класса, связанного с текущим файлом дизайнера. * $DSGPARENTNAME$: Эта переменная заменяется на имя экземпляра базового типа в текущем файле дизайнера. Вы также можете создавать свои собственные переменные при создании живого шаблона. Для этого просто введите имя переменной в формате $MYVARIABLE$ в теле шаблона, а затем определите ее значение или выражение в диалоговом окне "Edit Variables". Обратите внимание, что некоторые из этих переменных могут быть специфичными для определенных типов файлов или контекстов. Например, переменные, начинающиеся с $DSG, обычно используются в шаблонах, связанных с дизайнерами форм или пользовательскими контролами (Windows Forms Designer в Visual Studio). ### ### Пример использования переменных Давайте рассмотрим пример использования переменной в живом шаблоне (live template) в JetBrains Rider. Предположим, вы часто создаете новые классы и хотите автоматизировать этот процесс. Вы можете создать живой шаблон следующим образом: ![Раздел Live Templates в Rider-4](Раздел%20Live%20Templates%20в%20Rider-4.png) В этом шаблоне `$CLASSNAME
и `$END
- это переменные. - `$CLASSNAME
будет заменена на имя класса, которое вы введете при вставке шаблона. - `$END
определяет позицию, где будет расположен курсор после вставки шаблона. Таким образом, когда вы вставите этот шаблон и введете имя класса, например, "MyClass", вы получите следующий код: ![Раздел Live Templates в Rider-5](Раздел%20Live%20Templates%20в%20Rider-5.png) Это позволяет вам быстро создавать новые классы без необходимости вручную вводить все детали каждый раз. ## Вопросы ### Как сделать так, чтобы курсор становился не на $Class$, а на $END$ Можно попробовать отключить редактирование переменной $Class$. IDE автоматически перемещает курсор к первой переменной после вставки шаблона.