Горячие клавиши для запросов в SSMS

от автора

Посвящается тем, кому надоело писать один и тот же SELECT

Казалось бы, какая ерунда, но быстрых и внятных ответов в гуглонетах нет, поэтому дам их здесь.

  1. В SQL Server Management Studio невозможно навесить горячую клавишу на сниппет.

  2. Ничего Emmet-подобного найти мне не удалось. Найдёте — отпишите в комментариях.

  3. Можно доработать напильником.

В SSMS есть сниппеты. Добраться до них можно двумя способами:

  1. Меню Tools (Сервисы) -> Code Snippets Manager (Диспетчер фрагментов кода), оно же Ctrl+K, Ctrl+B. Он показывает нам список папок со сниппетами, переходя в которые можно собственно увидеть сами сниппеты.

  2. Контекстное меню

Самое интересное находится в контекстном меню. Там есть целых два пункта: 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 — их надо удалить или поменять им тип. Сберегает массу нервов и времени, когда пишешь десятки селектов в день. Иногда их даже писать не хочется, потому что опять надо писать. Пользуйтесь на здоровье!


ссылка на оригинал статьи https://habr.com/ru/post/688892/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *