Ярлыки фрагмента кода Visual Studio 2012 не работают для SQL

У меня есть собственный фрагмент кода, к которому я могу легко получить доступ с помощью Ctrl + K, Ctrl + X, а затем набрав 'm' для 'My Code Snippets' и нажав Tab, затем набрав первую букву фрагмента, который я хочу использовать, затем нажав Enter.

К тому времени просто печатать настоящую вещь почти не нужно.

Я попытался назначить сочетание клавиш для Edit.InvokeSnippetFromShortcut (Инструменты> Параметры> Среда> Клавиатура), но, хотя он позволяет мне назначить и сохранить ярлык, набрав ярлык фрагментов, а затем набрав ярлык, который я назначил для InvokeSnippetFromShortcut, ничего не делает. Это может быть связано с тем, что он не отображается в меню «Правка», где он выглядит (немного погуглил) так, как будто он должен быть расположен, поэтому, возможно, он недоступен.

Предыстория: я редактирую файл .sql, так что это фрагмент кода SQL. Поведение сниппета для C #, VB и т. Д. Может здесь не применяться. В моем пользовательском фрагменте в качестве языка используется sql (я пробовал использовать sql_ssdt с тем же результатом). Я просто хочу иметь возможность набрать «foo», нажать одну комбинацию клавиш и попросить редактора заменить «foo» на «barbaz_some_long_thing_that_is_tedious_to_type»

У кого-нибудь это работает? Если да, то как?


person jinglesthula    schedule 19.01.2013    source источник
comment
Я использую VB, и ярлыки тоже не работают   -  person J King    schedule 15.03.2013
comment
Во фрагменте есть тег ‹Shortcut›, но я не могу найти информации о том, как его использовать. Кто-нибудь?   -  person OlleR    schedule 11.04.2013


Ответы (1)


Похоже, это работа для AutoHotKey. Вы можете создать сценарий .ahk для прослушивания «горячих строк» ​​(всего, что набирается на клавиатуре, а затем добавлять такие условия, как открытие определенного окна. Я использую эту команду для обнаружения Visual Studio

Vis()
{
  SetTitleMatchMode 2
  IfWinActive, Microsoft Visual Studio
  {
    return 1
  }
  else
  {
    return 0
  }
}

Итак, вы можете написать эту команду

:*:foo::
if Vis() = 1
{
    SendInput bar
}
else
{
    SendInput foo
}
return

Если ввести foo в Visual Studio, фрагмент будет запущен, а вместо него будет отправлен ввод bar. Если ввести foo в любое другое окно, будет просто выводиться foo как обычно. Установить AutoHotKey быстро и намного проще, чем пытаться работать в рамках ограничений возможностей VS.

person roryok    schedule 27.05.2013
comment
ой. человек. такое общесистемное решение - это то, что я искал некоторое время назад, но почему-то пропустил это. большое спасибо! - person jinglesthula; 31.05.2013
comment
Рад, что смог помочь. AHK - это палочка-выручалочка! - person roryok; 14.06.2013
comment
Конечно - также потому, что это решение не только для VS. Я заметил, что с более крупными заменяющими текстовыми строками (например, с большими запросами) для отправки ввода требуется время. Если вы установите буфер обмена равным строке, затем нажмите Send ^ v, он сделает это мгновенно. Это стирает содержимое буфера обмена, что мне не нравится, поэтому я делаю tempClip: = Clipboard до и Clipboard: = tempClip после :) - person jinglesthula; 20.06.2013
comment
@jinglesthula этот скрипт, который я использую, делает это, это был всего лишь фрагмент =) - person roryok; 24.06.2013