【问题标题】:Configure Autohotkey to edit scripts with Notepad++配置 Autohotkey 以使用 Notepad++ 编辑脚本
【发布时间】:2018-01-15 01:38:47
【问题描述】:

我在工作笔记本电脑上将 .ahk 文件的默认编辑器设置为 Notepad++ Portable,但选择 编辑此脚本 会在标准 Windows 记事本中打开文件。

A post on the AHK forums 建议编辑注册表,但我在HKEY_CLASSES_ROOT\AutoHotkeyScript\Shell\Edit\Command 下看不到任何条目。

如何配置 AutoHotkey 以使用 Notepad++ 编辑脚本?

【问题讨论】:

  • 您是否阅读了该帖子的其余部分并尝试其他建议?喜欢使用nirsoft.net/utils/file_types_manager.html
  • 为我工作。不要忘记使用“Command”作为第二个文件夹名称(步骤 3)。

标签: autohotkey


【解决方案1】:

无论出于何种原因,注册表项默认不存在,但应用程序一旦创建就可以识别它。

  1. 在 RegEdit 中导航到 HKEY_CLASSES_ROOT\AutoHotkeyScript\Shell
  2. 右键单击 Shell 文件夹,选择 New > Key 并将此编辑命名。
  3. 右键单击编辑文件夹,选择New > Key 并命名此命令。
  4. 双击命令中的(默认)字符串条目。
  5. "C:\Program Files\Notepad++\Notepad++.exe" "%1" 粘贴到此窗口。
  6. 重新加载 AutoHotkey 以使更改生效。

注意:我不使用 Notepad++,但这适用于我系统上的 VS Code,只要可执行文件的目录信息正确,它也适用于 N++。


对应的.reg文件如下所示:

Windows Registry Editor Version 5.00 
[HKEY_CLASSES_ROOT\AutoHotkeyScript\Shell\Edit\Command]
@="\"C:\\Program Files\\Notepad++\\notepad++.exe\" \"%1\""

【讨论】:

  • 如何“重新加载 AutoHotKey”?依次重新加载每个 AHK 脚本不会这样做。我可以重新登录,但我不清楚如何重新加载 AHK。
  • @Trey 右键单击​​任务栏中的应用程序图标,单击退出。再次打开 AutoHotkey。否则,您可以通过相关命令重新加载它:autohotkey.com/docs/commands/Reload.htm
  • 是的,我试过了,但即使在依次重新加载或退出/重新启动每个之后,编辑也没有改变。由于每个 AHK 脚本都运行自己的解释器,也许他们正在汇集一个包含此内容的缓存,所以我必须退出每个脚本然后重新打开它们?我会尽可能地尝试重新登录,因为我有十几个脚本,这肯定容易得多。
  • 我无需重新加载 AHK 即可生效——只需在注册表编辑器中单击保存即可。
  • 我觉得其他人可能会对这打算改变什么感到困惑。确认一下,这是为了更改系统托盘中的“编辑此脚本”按钮,还是在右键单击 .ahk 文件时更改“编辑”上下文菜单项?
【解决方案2】:

上一个答案第 5 项中的注册表项不起作用。我什至不知道最后多余的%*是什么意思,所以我将其简化为:

"C:\Program Files\Notepad++\Notepad++.exe" "%1"

【讨论】:

  • "%*" 未在任何答案中找到。 %var% -> 这代表一个变量
【解决方案3】:

我发现的最简单的方法是:

  1. 右键单击.ahk文件
  2. 选择“打开方式”->“选择其他应用”
  3. 勾选“始终使用此应用打开 .ahk 文件”
  4. 然后从列表中选择 NotePad++

如果未列出,请选择“更多应用”,然后向下滚动到 NotePad++。 (请注意,此示例是特定于 Windows 10 的,但之前的版本非常相似。)

编辑注册表很棒,不要误会我的意思,但需要更长的时间。这有点像用卡车拍苍蝇!无论如何,希望这对你有用。我一直用它来设置我想要的文件关联。

【讨论】:

  • 如果你这样做,那么每次脚本都会被 NotePad++ 打开。因此,如果您有一个调用 .ahk 文件的启动脚本,它不会运行该脚本,而是在 NotePad++ 中打开它。
【解决方案4】:

如果你和我一样,对修改注册表犹豫不决,有一种方法可以使用 AutoHotKey 代码。

这是我用不同的编辑器编辑脚本的一种方法。虽然我使用的是 Visual Studio Code,但无论你想使用哪个编辑器,方法都是一样的。但有一点需要注意:我们无法更改现有的“编辑此脚本”菜单项,因为它被视为 标准 菜单项之一并且无法修改。相反,我在菜单顶部添加了一个新菜单项,上面写着“使用 Notepad++ 编辑”。

EditWithNotepadPlusPlus()
{
    Run "C:\Program Files (x86)\Notepad++\notepad++.exe" "%A_ScriptFullPath%"
}

; Remove the standard menu items temporarily
Menu, Tray, NoStandard 
; Add our custom menu item labeled "Edit With Notepad++" 
; and calls the function above
Menu, Tray, Add, Edit With Notepad++, EditWithNotepadPlusPlus 
; Add a separator
Menu, Tray, Add 
; Put the standard menu items back, under our custom menu item
Menu, Tray, Standard 

注意:如果您想知道,Menu, Tray, NoStandardMenu, Tray, Standard 行不是必需的。我使用这些行的原因是默认情况下,Menu, MenuName, Add 将菜单项添加到菜单底部。出于美观和实用的原因,我更喜欢 Exit 作为最后一个菜单项。所以Menu, Tray, NoStandardMenu, Tray, Standard 会导致我们的菜单项出现在顶部。

此方法的另一个好处是,如果您将脚本转移到新计算机上,它应该仍然可以工作(前提是您在另一台计算机上安装了 Notepad++)。如果您编辑注册表,您必须记住再次编辑注册表。

【讨论】:

  • 刚刚测试过,这不起作用:(菜单中没有添加条目。
  • @Mark 很奇怪我使用这段代码已经有一段时间了,到目前为止它对我有用。稍后我会检查为什么它可能无法正常工作。
  • @Mark 很抱歉回复晚了,但是如果你删除除了Menu, Tray, Add, Edit With Notepad++, EditWithNotepadPlusPlus 和顶部的EditWithNotepadPlusPlus 函数定义之外的所有其他行怎么办。这些是这项工作所需的最低限度的东西。
  • @KudosJohnson imgur.com/bvQhR6l 请看这张图片,它仍然没有任何作用。
【解决方案5】:

对于 AHK 版本 2,更改注册表对我不起作用(我尝试了 Computer\HKEY_CLASSES_ROOT\AutoHotkeyScript\Shell\Edit\CommandComputer\HKEY_CLASSES_ROOT\.ahk\Shell\Edit\Command),但这对我有用。它在分隔符后向 AHK 托盘菜单添加了两个菜单项:

EditWithNotepadPlusPlus(*)
{
    Run "C:\Program Files\Notepad++\notepad++.exe " A_ScriptFullPath
}
EditWithVsCode(*)
{
    Run "C:\Program Files\Microsoft VS Code\Code.exe " A_ScriptFullPath
}
A_TrayMenu.Add()
A_TrayMenu.Add("Edit with VS Code", "EditWithVsCode")
A_TrayMenu.Add("Edit with Notepad++", "EditWithNotepadPlusPlus")
return

【讨论】:

    【解决方案6】:

    在 Win10 上使用 AHK v1.1.3.02 和字符串 "C:\Program Files\TextPad 8\TextPad.exe" "%1" 效果很好。

    【讨论】:

      【解决方案7】:

      我在其他答案中提到的注册表更改有效,但您可能需要进一步添加以下标志:

      C:\Program Files (x86)\Notepad++\notepad++.exe %1  -multiInst -nosession
      

      这些标志将阻止 Notepad++ 将此窗口识别为整个会话的一部分,因此它不会覆盖您的正常会话历史记录或任何内容。我不记得我第一次在哪里找到这些解决方案,但我正在切换计算机 atm 并在我的注册表中找到它们,并注意到在此线程中的任何地方都没有提到它们。

      【讨论】:

        【解决方案8】:

        对我不起作用,我首先使用 R River

        的建议修复了它
        C:\Program Files (x86)\Notepad++\notepad++.exe %1  -multiInst -nosession
        

        但这每次都会创建一个新会话,所以我尝试删除结束参数,现在它可以工作了。

        C:\Program Files (x86)\Notepad++\notepad++.exe %1
        

        【讨论】:

          猜你喜欢
          • 2020-12-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-05-01
          • 2016-09-13
          • 2011-03-28
          • 1970-01-01
          • 2014-12-15
          相关资源
          最近更新 更多