【问题标题】:Keyboard shortcut to Un/Comment out code in Mathematica 7?在 Mathematica 7 中取消/注释掉代码的键盘快捷键?
【发布时间】:2011-08-02 01:37:57
【问题描述】:

注释/取消注释一段代码的键盘快捷键在 Java、.Net 等语言的其他编程 IDE 中很常见。我发现这是一种非常有用的技术,可以通过反复试验来临时注释掉和取消注释行、单词和部分代码以找出什么是有效的,什么是无效的。

我在版本 7 的 Mathematica 前端找不到任何这样的键盘快捷键。我知道可以通过选择代码、鼠标右键单击并从出现的菜单中选择 Un/Comment 来注释掉代码,但这是编码时太慢了。

我尝试使用键盘上的menu key Menu 访问此键,但 Mathematica 前端不像其他应用程序那样响应或识别此键,这可能允许使用组合键进行评论。其他人可以验证这不是我的机器独有的,并且mathematica 无法识别密钥。我查看了question 并查看了 KeyEventTranslations.tr 文件,但我认为没有任何方法可以创建快捷方式来执行此操作(?)。我应该忍受它吗?

还有其他建议吗?

(我看到有一个 Emacs 版本的 mathematica,我从未尝试过 Emacs 或这个 Mma 版本,并想象它会有这种能力,但不想去麻烦和安装它的不确定性。我也想猜测 Wolfram Workbench 可以做到这一点,但这可能不值得为此投资。)

【问题讨论】:

    标签: keyboard-shortcuts wolfram-mathematica comments mathematica-frontend


    【解决方案1】:

    如果您愿意编辑 Mathematica 系统文件MenuSetup.tr,您可以在 Mathematica 7.0.x 中安装快捷方式。您可以在与KeyEventTranslations.tr 文件相同的位置找到它(即在“SystemFiles/FrontEnd/TextResources/platform”下的安装中)。在MenuSetup.tr 中,在Edit 菜单的定义下找到以下行:

    MenuItem["Check &Balance", "Balance", MenuKey["B", Modifiers->{"Control", "Shift"}]],
    

    在该行的正下方,插入以下内容:

    MenuItem["Un/C&omment Selection", KernelExecute[FE`toggleComment[]], MenuKey["/", Modifiers->{"Command"}], MenuEvaluator -> Automatic, Method -> "Queued"],
    

    Un/Comment Selection 命令现在可以在 Edit 菜单下使用,键盘快捷键 Cmd-/ kbd> 或 Alt-/ 取决于您的平台——就像在 Mathematica 8 中预安装了此命令一样。

    请阅读有关破解 Mathematica 安装文件的常见免责声明 - 不提供任何保证 :)

    我不知道有什么方法可以将此功能映射到一些涉及 Menu 键的快捷方式。

    快捷键,无菜单

    前面的步骤通过安装一个新的菜单项来模拟 Mathematica 8 所做的事情。如果您希望保持菜单不变,则可以在KeyEventTranslations.tr 中安装快捷方式。添加以下行:

    Item[KeyEvent["/", Modifiers->{Command}], KernelExecute[ToExpression["FE`toggleComment[]"]], MenuEvaluator -> Automatic, Method -> "Queued"]
    

    如果该行不是列表中的最后一项,则需要在该行末尾添加一个逗号。

    【讨论】:

    • 这是有道理的。另外,你能解释一下为什么这可以从MenuSetup.tr 而不是KeyEventTranslations.tr 完成吗?
    • +1 这对我有用。对于其他尝试它的人,您需要关闭并重新启动mathematica 才能使用该命令。
    • @Mr 它将在KeyEventTranslations.tr 中工作,但您必须将命令包装在ToExpression 中,就像在ContextMenus.tr 中一样。
    • 谢谢,我学到了很多东西。你能告诉我MenuEvaluator -> Automatic, Method -> "Queued" 吗?
    • @Mr MenuEvaluatorMethod 的功能似乎与 ButtonEvaluatorMethod 选项类似。与Button 不同,这些映射文件上下文中的默认评估器似乎是前端,因此MenuEvaluator -> Automatic 似乎将表达式推送到内核。 Method -> “排队”似乎是一种防御措施,以防注释掉一大块代码需要很长时间。我经常说“似乎”,因为这都是猜测。
    【解决方案2】:

    选择代码并按以下选项之一:

    • Alt+/
    • Alt-E-O
    • Alt+E+O

    注意事项:

    • 仅在 Windows 上使用 Mathematica 8 测试。
    • 在我的非美式键盘(ABNT 巴西)上,快捷键 Alt+/ 不起作用,我使用 Alt+E+O。

    【讨论】:

      【解决方案3】:

      这是您的 KeyEventTranslations.tr 文件的代码,它将注释掉代码。另一半我还在努力。

      Item[KeyEvent["/", Modifiers -> {Command}],
          FrontEndExecute[{
              NotebookApply[FrontEnd`InputNotebook[],
                  "(*\[SelectionPlaceholder]*)"
              ]
          }]
      ], 
      

      这会将它绑定到 Alt+/,就像在 Mathematica 8 中一样。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-11
      • 1970-01-01
      • 1970-01-01
      • 2015-02-13
      • 2016-08-07
      • 1970-01-01
      • 2012-08-17
      • 2014-10-28
      相关资源
      最近更新 更多