使用宏在Visual Studio中删除键盘快捷键绑定

4

我设置了很多自定义键盘快捷方式。为了避免每次安装新的Visual Studio(目前经常发生,因为VS2010处于测试版/RC阶段)时都要重新设置它们,我创建了一个宏来设置所有我的自定义命令,如下所示:

DTE.Commands.Item("ReSharper.ReSharper_UnitTest_RunSolution").Bindings = "Global::Ctrl+T, Ctrl+A"

我的主要问题是默认情况下Ctrl+T被设置为映射到转置字符命令。因此,我想在我的宏中删除该默认值。
我尝试了以下两行代码,但都会抛出异常。
DTE.Commands.Item("Edit.CharTranspose").Bindings = ""
DTE.Commands.Item("Edit.CharTranspose").Bindings = Nothing

虽然它们有点起作用,因为它们实际上是移除绑定的;但我更喜欢不会抛出异常的解决方案。 那该怎么做呢?
3个回答

3

我曾遇到过同样的问题。我使用宏来为一组对齐宏分配键绑定。

Dim NewBindings() = {"Global::Alt+="}
DTE.Commands.Item("Macros.Dev.AlignUtils.AlignEquals").Bindings = NewBindings
NewBindings(0) = "Global::Alt+Num -"
DTE.Commands.Item("Macros.Dev.AlignUtils.AlignMinus").Bindings = NewBindings
...

我使用以下语句来删除键绑定:

Dim DelBindings() = {} 
DTE.Commands.Item("Macros.Dev.AlignUtils.AlignPlus").Bindings = DelBindings

在Visual Studio 2005下,它可以很好地运行。


2
我遵循了一种更加实用的方法(使用您的示例):
DTE.Commands.Item("ReSharper.ReSharper_UnitTest_RunSolution").Bindings = "Global::Ctrl+T"
DTE.Commands.Item("ReSharper.ReSharper_UnitTest_RunSolution").Bindings = "Global::Ctrl+T, Ctrl+A"

第一个任务中,Ctrl+T从任何其他功能中取消分配,然后在第二个任务中变成未绑定状态。 对我来说非常有效。

与原始解决方案相比,这确实具有有趣的好处 - 您实际上不需要知道键最初绑定到哪里。 - Pete

-2

您无需使用宏进行更改,只需前往

菜单>工具>选项 -- 键盘,然后从下拉列表中选择要更改快捷方式的选项并分配所需的快捷键即可。


我已经阅读并完全理解你想要做的事情。但是当我想要做类似的事情时,我从未找到过解决方案。请注意,Visual Studio会用新的快捷键替换旧的快捷键。因此,如果你正在创建一个新的快捷键,它将覆盖之前的快捷键,并且之前的快捷键会获得一个新的快捷键。而且你无法找到一种方法来获取为旧的快捷键生成的新键的信息。如果你想保持对旧的快捷键的了解,你只能按照我提到的方法更改旧的快捷键。 - Nasser Hadjloo
2
好的,如果你读了这个问题,你肯定没有理解它。我的整个观点是,当每个其他选项都由宏设置时,我想避免去选项菜单。 - Pete
1
好的,那么对于没有理解答案应该至少与问题有些关联而给予负分。真是让人无语。 - Sky Sanders

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接