如何设置Ctrl + R作为Delphi中“重命名”重构的快捷方式?

时间:2013-05-12 10:11:47

标签: delphi delphi-2009

在Delphi 2009中,我尝试使用GExperts为重命名重构配置快捷键 Ctrl + R (易于记忆)。我之前没有更改任何键绑定,因此所有内容都处于IDE默认状态。

Ctrl + R 实际上在IDE菜单中显示为快捷方式。但按下此组合键在编辑器中无效。

我可以看到Ctrl + R现在显示在IDE菜单Refactor | Rename ...中。正如预期的那样,菜单项“搜索”不再显示默认键绑定 Ctrl + R 。替换......'。

但是,上下文菜单项Refactoring | Rename ...仍显示默认快捷键 Shift + Ctrl + E

有没有办法设置此快捷方式?

2 个答案:

答案 0 :(得分:2)

我承认我对你采取的步骤感到有点困惑。 GExperts允许您轻松覆盖其自身编辑器增强功能的默认键绑定,但我从未见过允许您重新定义库存IDE功能或其他第三方扩展的键绑定的GExpert向导。

没关系。我已经使用GExperts多年了,我仍然发现我不知道存在的新东西。例如,“IDE菜单快捷方式”功能。这几乎使我以前的答案变得不必要了。但是,由于您已经在使用此功能并且快捷方式仍然无效,因此您可以尝试以下几种方法:

  • 尝试重新排序工具>选项>编辑器中的“增强模块” 选项>键映射。
  • 尝试在同一对话框中禁用“重构命令”模块。

如果没有这些,你可以试着修补我以前的答案。如果编写自己的软件包并修改IDE内部仍然没有产生任何结果,则可能根本无法实现。 GExperts文档尽可能多地说:

  

如果您发现所选的快捷方式不起作用,可能是因为快捷方式是由代码编辑器或其他菜单项保留的,您需要选择一个不同的未使用的快捷方式。

无论如何希望这有帮助。

上一个回答:

  

使用Open Tools Api实现键盘绑定。   不幸的是,它是IDE中记录最差的部分   你是在黑暗中拍摄的。

     

有两种类型的键绑定:

     
      
  • 完成 - 键到命令的独占映射。一次只能激活一个完整的绑定。
  •   
  • 部分 - 当前有效完整绑定的扩展名。
  •   
     

我无法在Delphi 2009中确切地说,但在Delphi 2010及以上版本中   是这些部分绑定的列表(至少是那些困扰的部分绑定)   在选项>中实现显示名称)编辑器选项> KeyMappings>   增强模块。据说可以通过单击每个旁边的复选框来启用/禁用它们,但这似乎没有   即使在重新加载IDE之后,对我尝试过的任何影响都会产生影响。

     

“重构命令”是列出的绑定之一。重构   package作为集合.NET程序集实现   (Borland.Together.Refactoring.*.dll)只有一个小存根   标准BPL。检查它的内部工作可能会有所帮助   使用众多“反射”工具之一。

     

在任何情况下,ToolsAPI.pas中的IOTAKeyboardServices接口都是   您需要在哪里更改现有绑定。四   感兴趣的功能:

     
      
  • AddKeyboardBinding
  •   
  • LookupKeyBinding
  •   
  • GetNextBindingRec
  •   
  • RemoveKeyboardBinding
  •   
     

假设他们实际上在可预测的庄园中工作这些功能   应该允许你识别正在处理的TKeyBindingRec    CTRL + R

     

请记住,任何 IDE包都可以绑定到键盘快捷键   用户可以随心所欲地加载和卸载包。这意味着你不能   假设只有一个命令绑定到快捷方式。你甚至不能   假设一个印刷机和印刷机之间的装订是相同的   下。

     

虽然理论上快捷方式可以触发多个不相关的命令   它很少这样做。大多数包装都认为它们是唯一的   侦听快捷方式并返回TKeyBindingResult   krHandled,将停止进一步处理该快捷方式,直到   再次按下它。

关于上下文菜单的问题。 IDE中的每个可停靠表单都有一个由操作列表填充的单独上下文菜单。对于每个可停靠的表单,此列表也是单独的。据我所知,IDE的主要操作列表与编辑器窗口的操作列表之间没有关联。我的猜测是GExperts的作者不想尝试将上下文菜单的动作列表与主菜单的动作列表相匹配。

答案 1 :(得分:1)

F2 - 正如@Whiler所建议的那样 - 可以用作重命名重构的一个易于记忆的快捷方式。