Посвящается тем, кому надоело писать один и тот же SELECT
Казалось бы, какая ерунда, но быстрых и внятных ответов в гуглонетах нет, поэтому дам их здесь.
В SQL Server Management Studio невозможно навесить горячую клавишу на сниппет.
Ничего Emmet-подобного найти мне не удалось. Найдёте - отпишите в комментариях.
Можно доработать напильником.
В SSMS есть сниппеты. Добраться до них можно двумя способами:
Меню Tools (Сервисы) -> Code Snippets Manager (Диспетчер фрагментов кода), оно же Ctrl+K, Ctrl+B. Он показывает нам список папок со сниппетами, переходя в которые можно собственно увидеть сами сниппеты.
Контекстное меню
Самое интересное находится в контекстном меню. Там есть целых два пункта: Insert Snippet (Вставить фрагмент кода) и Surround With (Разместить во фрагменте: Ctrl+K, Ctrl+S). Первый показывает тот самый список папок, а второй - некий ограниченный набор сниппетов, которые вызываются кликом по ним.
Дело в том, что в SSMS есть два вида сниппетов: Expansion и SurroundsWith. И в пункте контекстного меню Surround With отображаются именно вторые. XML-файлы сниппетов хранятся в папке, указанной в Диспетчере фрагментов кода.
Выпадающий список контекстного пункта Surround With (Ctrl+K, Ctrl+S) подхватывает все сниппеты из подпапок этой папки, которые имеют тип SurroundsWith. Тип определяется в узле SnippetType в самом коде сниппета:
...
<Header>
<Title>If</Title>
<Shortcut/>
<Description>Фрагмент кода для конструкции If.</Description>
<Author>Корпорация Майкрософт</Author>
<SnippetTypes>
<SnippetType>SurroundsWith</SnippetType>
</SnippetTypes>
</Header>
...
Далее есть узел Code, в котором определяется, какой собственно текст должен быть вставлен.
Пример моего элементарного сниппета на SELECT
<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<_locDefinition xmlns="urn:locstudio">
<_locDefault _loc="locNone"/>
<_locTag _loc="locData">Title</_locTag>
<_locTag _loc="locData">Description</_locTag>
<_locTag _loc="locData">Author</_locTag>
<_locTag _loc="locData">ToolTip</_locTag>
</_locDefinition>
<CodeSnippet Format="1.0.0">
<Header>
<Title>SELECT</Title>
<Shortcut/>
<Description/>
<Author/>
<SnippetTypes>
<SnippetType>SurroundsWith</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Code Language="SQL">
<![CDATA[select
*
from (nolock)
where id =
]]></Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>
Синтаксис позволяет также передавать параметры, делать некие плейсхолдеры, по которым сразу после вставки вы сможете пробежаться табом и заполнить нужные места, но об этом всём можно почитать и в официальной доке.
Для вызова требуется произвести целых четыре нажатия на клавиатуре, но это лучше, чем ничего, и они достаточно быстро доводятся до автоматизма: Ctrl+K, не отжимая Ctrl жмём S, стрелка вниз, Enter.
Чтобы в список не попадали дефолтные SurroundsWith - их надо удалить или поменять им тип. Сберегает массу нервов и времени, когда пишешь десятки селектов в день. Иногда их даже писать не хочется, потому что опять надо писать. Пользуйтесь на здоровье!