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

Комментарии (0)