如何在文件资源管理器中为打开 VS Code 添加一个键盘快捷方式?

4
我希望能够在文件资源管理器中的任何文件夹中按下 . 键,并打开Visual Studio Code。这与右键单击文件夹并单击“使用Code打开”具有相同的效果。按下 . 就像我可以在GitHub网站上做的那样。
虽然官方可能不支持此功能,但是否有任何解决方法使其可行?

这篇文章有帮助吗? - nwpie
@nwpie 我不想右键,因为那是两个鼠标点击,我不喜欢。我只想按下 . 立即打开 vscode。 - DavidNyan10
我不确定是否可以使用AutoHotKey(和其他类似的热键程序)实现,但你是否愿意安装第三方程序? - Gino Mempin
@GinoMempin 当然可以。我甚至正在寻找第三方文件浏览器,因为Windows自带的太烂了,但这是离题了。正如我在问题中所说的那样,
官方可能不支持,但是否有任何解决方法使其工作? 因此,如果有任何好的第三方软件可用,那就太好了。
- DavidNyan10
我不认为Windows资源管理器允许添加自定义键盘快捷键。 - rioV8
5个回答

2

谢谢 @AdrAs 和 @SarvinR 的答案。我一开始使用了Sarvin的解决方案,但是在试图通过搜索和理解Adr的解决方案时,发现Adr的方案才是真正解决这个问题的办法。

下载 AutoHotKey。如果您熟悉它,那么使用它非常好。AHK基本上创建类似于Adr所描述的快捷键(或快捷方式)。

(如果您已经有一个使用的ahk,则可以跳过下面的步骤并复制下面的代码块) 通过右键单击桌面或文件资源管理器中的任何位置创建新的AutoHotKey脚本(我们稍后会将其移动,因此名称无所谓)。将其命名为任何您想要的名称。对于这个答案,我将其称为MyScript.ahk(实际上我自己使用的是david.ahk)。

现在,打开命令提示符(win + rcmdenter),并查找VSCode所在的位置,方法是键入where code。它可能会给出两行。记住其中一行(我选择了顶部一行)。 cmd

右键单击您刚创建的ahk脚本文件,然后选择编辑脚本(或者您可以使用notepad ++或VSCode或您选择的任何编辑器打开它,它只是普通的文本文件)。删除所有内容,并粘贴此内容:

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn  ; Enable warnings to assist with detecting common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.

GetActiveExplorerPath()
{
    explorerHwnd := WinActive("ahk_class CabinetWClass")
    if (explorerHwnd)
    {
        for window in ComObjCreate("Shell.Application").Windows
        {
            if (window.hwnd==explorerHwnd)
            {
                return window.Document.Folder.Self.Path
            }
        }
    }
}

#IfWinActive ahk_exe Explorer.exe
.::
path := GetActiveExplorerPath()
run, "C:\Users\david\AppData\Local\Programs\Microsoft VS Code\bin\code" "%path%"
return

在倒数第二行,用cmd中刚才看到的内容替换VSCode位置。你很可能只需要将david改为你的用户名即可。
现在,保存文件并尝试打开它(双击ahk)。如果它能正常工作,你的系统托盘上应该会出现一个绿色的H图标,没有任何错误提示。在Windows文件资源管理器中进入任意文件目录,然后像在GitHub中一样按下.键(不要在大型目录如C:根目录中这样做,因为VSCode无法加载太多文件)。这时应该能够按预期工作,如果不能,那么你可能做错了什么(我刚才也是按照这个方法操作的,而且它已经成功了)。
当然,你可能想让这个脚本在启动时自动运行。将.ahk文件复制/移动到C:\Windows\System32中。它会要求你授予管理员权限,所以点击“是”。打开注册表编辑器(win + rregeditenter),导航到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run。在右侧面板上单击空白处,然后创建一个新的字符串值并设置任何名称(我用了davidAHK),将其值设置为你刚刚复制/移动的ahk文件路径,要加引号(对于我的情况是"C:\Windows\System32\david.ahk")。关闭注册表编辑器并安全地重新启动计算机。ahk脚本应该会在启动时运行,并且你应该能够在文件资源管理器中的任何目录中单击.来打开VSCode。
再次感谢@AdrAs和@SarvinR的帮助!

脚本没有转义文件夹路径中的空格。例如,如果我打开一个名为“New Folder”的文件夹,它会停在“New”,并在VSCode中打开一个名为“New”的空文件。你知道如何解决这个问题吗? - amo
我找到了一个解决方案,你可以用引号"%path%"来包裹%path%变量,以转义文件夹路径或文件名中的任何空格。 - amo

2
最大的问题是从Windows资源管理器中获取当前位置。这需要进行一些逆向工程来获取Windows资源管理器存储位置的内存地址。如果由于任何原因此地址更改,您将需要再次查找它。
除此之外,Windows支持全局键盘钩子。因此,您可以为 . 键设置全局键盘钩子。Windows API还提供了获取活动窗口的方法。因此,每当按下 . 键时,您可以检查活动窗口是否为资源管理器窗口。然后,您可以从资源管理器窗口的内存中读取当前文件夹。之后,您已经拥有启动Visual Studio Code所需的所有内容。
这很不正规,但我想这是你唯一的选择。要研究的主题包括:
  • 键盘记录器 - 这些例如使用我提到的全局钩子
  • 通用逆向工程 - 查找Windows资源管理器中当前位置的地址
编辑Autohotkey post关于如何获取Windows资源管理器位置。如果像人们声称的那样有效,则可以使用Autohotkey注册 . 键的钩子并启动VS code。

1
我想使用AHK v2启动VS Code并打开文件夹或选定的文件,并希望它能够即插即用地适用于其他用户。以下是结果:
#Requires AutoHotkey v2.0

; This is the key combo.
#!.::
{
    ; Is the current window an Explorer window?
    if (WinGetClass("A") == "CabinetWClass") {
        ; Cache the current clipboard contents.
        clipboard := A_Clipboard

        ; Clear the clipboard & copy selected files.
        A_Clipboard := ""
        Send "^c"
        ClipWait(0.5)

        ; If no files are selected...
        if (A_Clipboard == "") {
            ; Get the current window's ID.
            hwnd := WinGetID("A")

            ; Find the current window's COM object.
            for window in ComObject("Shell.Application").Windows{
                if (window && window.hwnd && window.hwnd == hwnd)
                    ; Get the current folder's path.
                    path := window.Document.Folder.Self.Path
            }
        }

        else {
            ; Quote & space-concatenate selected files.
            path := '"' . StrReplace(A_Clipboard, "`n", '" "') . '"'
        }

        ; Restore the clipboard.
        A_Clipboard := clipboard     
        
        ; Run code.
        exe := '"' . StrReplace(A_AppData, "Roaming", "Local\Programs\Microsoft VS Code\code") . '"'
        Run(exe . " " . path)
    }
}

这个工具非常好用,而且在你的电脑上安装和运行也非常简单!请查看代码库中的说明。


1

我有一个关于这个的技巧

创建vs.bat文件并在其中编写以下代码

@echo off
code %cd%

将此文件移动到C:/Windows/System32/

现在一切准备就绪。

如果您在资源管理器的地址栏中键入vs,则会打开带有当前文件夹的VS Code。


0

打开VSCode -> command+shift+p -> 输入"shell command"并按回车键 - > 点击提示信息 "在路径中安装'code'命令"

打开目录 -> 输入 code .


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