在 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,我找不到任何相关内容。
答案 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#编辑器”的相关信息。但这相对容易,但是不直观。要获得标准编辑器的指导,您可以:
Tools > Options > Environment > Keyboard
Use new shortcut in
下拉菜单,选择所需的编辑器Tools > Import and Export Settings... > Export
Environment > Keyboard
.vssettings
文件的位置.vssettings
文件UserShortcuts
。您会在此处找到修改后的命令Shortcut
节点中,您将找到您的范围(在我的情况下为Scope="C# Editor"
)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}" />