在Visual Studio Code中,如何将clink注入集成终端?

9

我曾在Windows上使用clinkConEmu执行各种Node相关任务,但现在我正在尝试使用Visual Studio Code。

如何将clink注入到Visual Studio Code的集成终端中,以便在会话之间获得真正的命令历史记录持久性、增量历史记录搜索等功能?

使用ConEmu,我可以通过将clink文件夹放入指定的拾取目录中来注入clink。

我尝试在VS Code设置terminal.integrated.shell.windows中使用包含的clink批处理文件路径和clink exe路径,但这些会立即生成并关闭命令行窗口。

谢谢!

4个回答

22

我发现你可以向Visual Studio Code中的集成式Shell传递参数。结合cmd.exe /K选项,它可以执行由字符串指定的命令但保持打开状态,clink可以被注入。

在VS Code中,转到“文件”>“首选项”>“设置”或使用 Ctrl,添加以下设置:

"terminal.integrated.shell.windows": "C:\\WINDOWS\\sysnative\\cmd.exe",
"terminal.integrated.shellArgs.windows": ["/K", "C:\\path\\to\\clink\\clink_x64.exe inject"]

这相当于在Windows中打开命令提示符并运行clink_x64 inject


4
我必须将其更改为["/K", "C:\\path\\to\\clink\\clink_x64.exe","inject"](可能是因为我的路径包含空格),但除此之外它运行良好\o/ - gkalpak
请注意,要以json格式打开这些设置,请选择“打开文件”,然后输入:%APPDATA%\Code\User\settings.json。此外,为了使历史记录与clink配合使用,请在inject之后传入默认配置文件:, "--profile", "~\\clink"作为另外两个参数。 - phyatt

1

使用 "terminal.integrated.shell.windows" 已被弃用。

这已经被弃用,现在推荐的配置默认 shell 的方法是在 #terminal.integrated.profiles.windows# 中创建一个终端配置文件,并将其配置文件名称设置为默认值 #terminal.integrated.defaultProfile.windows#。目前,这将优先于新的配置文件设置,但在未来这将会改变。

这是我使用的配置(将其添加到您的 settings.json 文件中):

"terminal.integrated.profiles.windows": {
    "CLink": {
        "overrideName": true,
        "path": "C:/Windows/system32/cmd.exe",
        "args": [
            "/k",
            "FULLPATH/clink.bat",
            "inject",
        ]
    }
},
"terminal.integrated.defaultProfile.windows": "CLink",

帮了我一个大忙!顶部答案过时了,对于 VSCode 1.82.0 无效。 - Sanjid Chowdhury

0

针对我的评论进行扩展:

使用以下方式打开settings.json文件:

File > Open > %APPDATA%\Code\User\settings.json

假设您已经使用Chocolatey安装了Clink:

choco install clink-maintained

那么你的clink_x64.exe就在这里:

C:\Program Files (x86)\clink\clink_x64.exe

而你添加到settings.json的行看起来像:

    "terminal.integrated.shell.windows": "C:\\WINDOWS\\sysnative\\cmd.exe",
    "terminal.integrated.shellArgs.windows": [
        "/K",
        "C:\\Program Files (x86)\\clink\\clink_x64.exe",
        "inject",
        "--profile",
        "~\\clink"
    ],

请注意添加 --profile ... 这将使历史记录在 vscode 会话之间保持持久化。

请注意,路径中的空格可能会破坏 clink 的某些功能(或者至少曾经如此)。 - thinkOfaNumber

0

这不是你问题的答案,但有另一个技巧可以在一个窗口中看到cmder和文本编辑器。你可以在cmder中打开你的文本编辑器作为另一个选项卡,我在这里描述了如何做:

https://medium.com/@WMorkowski/protip-integrating-cmder-with-text-editor-7f08a6e76de7

来自文章:

  1. 运行Cmder。
  2. 进入“设置->启动->环境”
  3. 输入:set EDITOR_PATH=C:\Program Files (x86)\Microsoft VS Code\Code.exe alias editor="%EDITOR_PATH%" $1 -new_console:s50V,其中第一行应该键入您的文本编辑器路径(我在Visual Studio Code和Sublime上测试过,但应该也适用于其他编辑器)。
  4. 保存您的设置。
  5. 在命令行中键入“editor”命令。

哇!我们快要完成了。但在大多数情况下,您不希望控制台选项卡附加到窗口顶部。您应该关闭控制台选项卡,然后再次打开它,注意勾选“将新控制台拆分到底部”复选框并选择正确的控制台类型。现在,当您最终设置好所有内容后,您应该转到“设置->启动”,并选中“自动保存/恢复已打开选项卡”复选框以保存我们的新工作流程。现在每次运行Cmder时,都会还原您的选项卡设置。


这实际上将VS Code保持在cmder选项卡内部?如果您想以复杂的方式拆分窗口,那就非常好。 - thinkOfaNumber

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