VS 2013 SDK:如何仅为代码窗口编辑器键入热键?

时间:2015-07-10 09:31:30

标签: c# .net vb.net visual-studio visual-studio-sdk

C# VB.Net 中,使用Visual Studio ,我想为{分配自定义键盘快捷键{1}},例如 Ctrl + E + R ,然后,当按下时,关联的CommandBarButton应调用其CommandBarButton方法(我想是这样)。

我怎么做?。

更新

(请避免上述问题,该问题已经得到解答。)

其实我正在使用 vsct 文件,然后我的键绑定就是:

Execute

MSDN 解释说<KeyBindings> <KeyBinding guid="guidMainCmdSet" id="cmdidMyCommand" editor="guidVSStd97" mod1="Control" key1="E" mod2="Control" key2="R"/> </KeyBindings> 是全局的,它似乎会影响到IDE的所有部分:

https://msdn.microsoft.com/en-us/library/bb165973%28v=vs.90%29.aspx

  

要在全局范围内定义键绑定,请使用编辑器ID值   guidVSStd97。

我的扩展程序使用代码窗口的选定文本,因此很奇怪,例如在解决方案资源管理器中,或者加载任何项目,我都可以按热键。

然后,我希望能够仅在代码窗口编辑器中按下该热键(Ctrl + E + R)。

我的问题是:

代码窗口编辑器的编辑ID是什么?

附加要求:

我需要 MSDN 参考才能看到更多相关的编辑ID,我找不到任何相关内容。

2 个答案:

答案 0 :(得分:4)

在Visual Studio中,键盘快捷键与命令相关联,而不是直接与CommandBarButtons相关联。从技术上讲,它们被称为键盘绑定,并在声明命令的.vsct文件中声明。见KeyBindings element

编辑:您必须使用:

  <KeyBinding guid="guidVSMyPackageCmdSet" id="cmdidMyCommand" editor="guidSourceCodeTextEditor" mod1="Control" key1="X" mod2="Control" key2="X"/>

  <GuidSymbol name ="guidVisualBasicEditor" value="{2c015c70-c72c-11d0-88c3-00a0c9110049}" />

  <GuidSymbol name ="guidSourceCodeTextWithEncodingEditor" value="{c7747503-0e24-4fbe-be4b-94180c3947d7}" />

  <GuidSymbol name ="guidSourceCodeTextEditor" value="{8b382828-6202-11d1-8870-0000f87579d2}" />

...

其中guidSourceCodeTextEditor可以是您在&lt;符号&gt;中定义的任何名称。必须从HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ 12.0Exp_Config \ Editors获取其值的部分。运行包后,如果您转到工具&gt;选项窗口,环境&gt;键盘部分,在显示包含的命令中键入命令的名称,您应该在列表中看到括号内的编辑器的快捷方式,就像您从“使用新的快捷方式”列表中选择它一样。如果每个Visual Studio版本的guid相同,那么我们就会产生问题。 AFAIK,这是不能保证的(没有什么能阻止微软在新版本中更改guid)但可能它们是相同的。我现在无法验证,因为我使用的计算机只有VS 2013.

答案 1 :(得分:1)

我找不到Visual Studio 2019“ C#编辑器”的相关信息。但这相对容易,但是不直观。要获得标准编辑器的指导,您可以:

  1. 转到Tools > Options > Environment > Keyboard
  2. 在列表中选择任何命令
  3. 打开Use new shortcut in下拉菜单,选择所需的编辑器
  4. 为其分配任何快捷方式
  5. 保存选项
  6. 转到Tools > Import and Export Settings... > Export
  7. 取消选择全部,然后选择Environment > Keyboard
  8. 按导出,然后选择将其另存为.vssettings文件的位置
  9. 使用任何文本编辑器打开.vssettings文件
  10. 搜索UserShortcuts。您会在此处找到修改后的命令
  11. Shortcut节点中,您将找到您的范围(在我的情况下为Scope="C# Editor"
  12. 搜索该范围值(例如C# Editor

您将找到一个Scope XML节点。以我为例:

<Scope Name="C# Editor" ID="{A6C744A8-0E4A-4FC6-886A-064283054674}"/>

复制ID(包括花括号),并将其设置为<GuidSymbol ... />的值,如本主题的另一个answer中所述。以我为例:

 <GuidSymbol name="guidCSharpEditor" value="{A6C744A8-0E4A-4FC6-886A-064283054674}" />