Пусть наш продукт PVS-Studio и позиционирует себя как продукт для программистов, из-за чего почти все вопросы по технической поддержке являются узкоспециализированными (то есть обычно нам не приходится отвечать на вопросы чем-то в стиле "А вы пробовали его выключить и снова включить?"), иногда всё же приходится заниматься трудом в стиле Капитана Очевидность. Один из задаваемых вопросов подобной категории - почему у вас нет поддержки горячих клавиш на проверку файла / проверку решения или почему клавиши перехода к следующему или к предыдущему предупреждению (Alt+'[' и Alt+']') выбраны столь неудачно? Что ж, попробуем разобраться, почему так произошло.
Вообще, зачастую это и впрямь становится проблемой при разработке дополнений для Visual Studio - выбрать подходящие горячие клавиши. Дело в том, что горячие клавиши - инструмент вообще-то довольно удобный, поскольку помогает сэкономить довольно много времени, покуда другие елозят по столу мышкой (отчасти из-за этого текстовые редакторы vi и emacs столь популярны). Но от горячей клавиши нет никакой пользы, если для её доступа требуется нажимать Ctrl+Shift+Alt+Numpad 4 при отключённом NumLock или, к примеру, она требует нескольких "аккордов" по клавиатуре вроде Alt+K, Ctrl+L, Ctrl+Shift+Z. Подобные комбинации могут серьёзно усложнить жизнь, поскольку для их набора тратится времени не особо много меньше, чем для пары кликов мышкой. Разве не для этого были созданы "горячие клавиши"? Но встаёт другая проблема. Конечно же, хотелось бы, чтобы переход к следующему или предыдущему диагностическому сообщению был несколько доступнее, однако большая часть клавиатуры уже занята горячими клавишами под нужды Visual Studio, а та часть, которая не занята, наверняка используется наиболее распространёнными расширениями. Поэтому по умолчанию была выбрана комбинация клавиш, которая вряд ли занята как Visual Studio, так и другими расширениями, чтобы избежать конфликтов. Однако это только "по умолчанию". Как вы уже, наверное, догадались, любой пункт меню можно назначить (или переназначить) на горячую клавишу.
В этом пункте будет детально изложена привязка некоторой горячей клавиши к пункту меню "Проверить текущий файл" ("Check current file"). Привязывать будем к этому пункту меню комбинацию клавиш Alt+'\'. Разумеется, подобными действиями можно вполне очевидным схожим образом привязать горячую клавишу к любому пункту меню, в том числе и к "Go to Next Message" и "Go to Previous Message". Также вполне очевидно, что привязать к каждому пункту меню можно любую комбинацию клавиш, не только Alt+'\'.
Для того, чтобы сделать это, в первую очередь требуется войти в меню "Options" редактора Visual Studio. Скриншоты будут приведены применительно к редактору Microsoft Visual Studio Professional 2012.
Рисунок 1 - Меню "Опции" ("Options")
После появления диалогового меню требуется зайти в пункт "Environment" и выбрать подпункт "Keyboard".
Рисунок 2 - Меню "Keyboard"
Для упрощения поиска пункта меню рекомендуем ввести фильтр "PVSStudio" в поле "Show commands containing:". Это отфильтрует все доступные для назначения клавиш команды до только тех из них, которые относятся к PVS-Studio.
Рисунок 3 - Фильтрация всего списка возможных привязок по ключевому слову "PVSStudio"
После данных манипуляций требуется найти в списке ниже интересующую нас строку. В нашем случае это строка "PVSStudio.CheckCurrentFile" - проверить текущий файл.
Рисунок 4 - Выбор подходящего пункта "PVSStudio.CheckCurrentFile" из списка
После этого требуется в поле "Press Shortcut Keys" нажать требуемую комбинацию клавиш, после чего нажать кнопку "Assign", чтобы назначить её команде.
Рисунок 5 - Назначение команде "PVSStudio.CheckCurrentFile" горячих клавиш Alt+'\'
После этого остаётся только нажать "OK" и убедиться, что всё сработало корректно.
Рисунок 6 - Корректно назначенная комбинация клавиш
Несмотря на то, что тема заметки была достаточно очевидная, мы надеемся, что она будет кому-то полезной, поскольку позволит работать таким же образом по аналогии не только с другими командами нашего инструмента, но и с командами Visual Studio, и с другими расширениями оболочки.