Как попасть в раздел:
Preferences -> Editor -> Live Templates -> C# и мы видим список. (Не путать Live Templates с File Templates)
Live Templates - это предустановленные или пользовательские сниппеты кода, которые можно быстро вставить в свой код.
То есть пишешь команду прямо, где код и редактор предлагает подставить шаблон кода. Например, itar
Предустановленные сниппеты:
prop - создает свойство
propg - создает с приватным set
sfid - создать серилизируемое поле (переименовал, было sfield)
ctor - создает конструктор
ear - создает пустой массив
Мои сниппеты:
Fid - создает поле
Med - создает метод
Medr - создает метод с return
## Разбор интерфейса

###
### Цифра 1 на скриншоте
Создает новый сниппет.
### Опция "Reformat" (Переформатировать)
Используется для автоматического форматирования кода в соответствии с заданными стилем и соглашениями о форматировании.
Когда вы вставляете живой шаблон (live template) и эта опция включена, Rider автоматически форматирует вставленный код. Это может включать в себя корректировку отступов, пробелов, расположения скобок и других элементов форматирования, чтобы они соответствовали вашим настройкам стиля кода.
### Опция "Shorten qualified references" (Сократить квалифицированные ссылки)
Используется для автоматического сокращения полных имен классов до их коротких имен, если это возможно.
Когда вы вставляете живой шаблон (live template) и эта опция включена, Rider автоматически заменяет полные имена классов на их короткие имена, если в данном контексте это не вызовет конфликтов имен.
Например, если у вас есть следующий код:

И вы включили опцию "Shorten qualified references", Rider автоматически преобразует его в:

Это делается при условии, что в данном контексте нет другого класса с именем Console, который мог бы вызвать конфликт имен.
Эта опция помогает сделать код более читаемым и компактным, убирая ненужные полные имена классов.
### Use in
Позволяет вам определить, как именно будет использоваться ваш шаблон.
Вот что означают эти три опции:
* "Generation": Этот шаблон будет доступен для вставки в код. Это значит, что вы можете использовать его для генерации новых фрагментов кода, например, для создания нового класса или метода.
* "Surround": Этот шаблон будет доступен для обрамления уже существующего кода. Это значит, что вы можете выделить фрагмент кода и использовать шаблон, чтобы обернуть этот код в определенную структуру, например, в условный оператор или цикл.
* "Both": Этот шаблон будет доступен и для генерации, и для обрамления кода. Это значит, что вы можете использовать его как для вставки нового кода, так и для обрамления уже существующего кода.
### "Mnemonic" (Мнемоника)
Это короткое слово или фраза, которую вы можете использовать для быстрого вызова вашего шаблона.
Представляет собой одно слово без пробелов. Использование запятых или пробелов в мнемониках не поддерживается.
Например, если у вас есть шаблон для создания нового класса в C#, его мнемоника может быть "newclass" или "nc". Когда вы начинаете вводить "newclass" или "nc" в редакторе кода, Rider предложит вам этот шаблон.
### Окошко Edit Variables
Открывается, нажав на кнопку (под цифрой 2 на скриншоте выше)
Если переменная помечена как "Editable" (то есть галка установлена), это означает, что вы можете ввести или изменить ее значение после вставки сниппета в ваш код проекта.

_Опция "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.
Предположим, вы часто создаете новые классы и хотите автоматизировать этот процесс. Вы можете создать живой шаблон следующим образом:

В этом шаблоне `$CLASSNAME
и `$END
- это переменные.
- `$CLASSNAME
будет заменена на имя класса, которое вы введете при вставке шаблона.
- `$END
определяет позицию, где будет расположен курсор после вставки шаблона.
Таким образом, когда вы вставите этот шаблон и введете имя класса, например, "MyClass", вы получите следующий код:

Это позволяет вам быстро создавать новые классы без необходимости вручную вводить все детали каждый раз.
## Вопросы
### Как сделать так, чтобы курсор становился не на $Class$, а на $END$
Можно попробовать отключить редактирование переменной $Class$.
IDE автоматически перемещает курсор к первой переменной после вставки шаблона.