gpt4 book ai didi

visual-studio-code - VSCode : Store and reopen a group of file tabs so that I reset a specific environment in the future

转载 作者:行者123 更新时间:2023-12-04 17:26:39 27 4
gpt4 key购买 nike

VSCode 会记住上一个环境中在我的工作区中打开的文件选项卡,因此如果我关闭 VSCode 并重新打开,我会打开相同的文件。
在一两天的工作中,我可能会在我的 PR 进行审查时在 2 或 3 个不同的功能分支之间切换。
每个功能分支通常位于代码库的完全不同的区域,这意味着,在每个分支上工作时,我希望打开不同的文件组。
我想知道是否有办法保存打开标签的快照,以便我将来可以重新打开。
一个非常好的流程是在 VSCode 检测到分支更改时自动打开这些文件而其他文件关闭。

最佳答案

  • 获取当前打开文件的“快照”。
  • 将此快照保存在某处;使其易于更改。
  • 使用快照打开它的所有文件;首先关闭所有其他文件。
  • 能够制作多个快照并轻松调用每个快照。

  • (1) 比你想象的要难。有许多关于仅在当前打开的文件中搜索的 vscode 问题,并且由于这个原因,几年后该问题在很大程度上仍未解决。
    演示:获取所有打开文件的相对路径(不幸的是,gif 创建软件在捕获所有这些演示中使用的所有按键方面做得很差):
    get relative paths of opened files demo
    天哪,刚刚发生了什么。 一个键绑定(bind),它们以特定方式收集和格式化。
    发生了很多事情。我所知道的有效获取打开文件列表的唯一方法(即使在扩展中也可能如此)是通过“打开编辑器” View 。所以我们
    (a) 关注 Open Editors View ,
    (b) 选择整个列表,还好有一个
    (c) copyRelativeFilePath命令(或 copyPath 用于完整路径)将它们全部放在一个列表中。
    但列表最初看起来像:
    1.html
    simple\\gulpfile.js
    test1.txt
    这对我们没有多大好处。但是现在在 ClipBoard上还有一个扩展名, Replace Rules能够通过一系列正则表达式运行剪贴板内容(也不修改剪贴板内容)并将结果粘贴到某处。所以你需要那个扩展和一个宏扩展,这里使用 multi-command运行所有步骤。这是进入 settings.json 的宏:
      "multiCommand.commands": [

    {
    "command": "multiCommand.getOpenedEditorsForTaskOpenAll",
    "interval": 50,

    "sequence": [
    "workbench.files.action.focusOpenEditorsView",
    "list.selectAll",
    "copyRelativeFilePath",
    // "copyFilePath",
    "workbench.action.focusActiveEditorGroup",
    {
    "command": "replacerules.pasteAndReplace",
    "args": {
    "ruleName": "Prepare file list for task open"
    }
    },
    "editor.action.formatSelection",
    "cancelSelection",
    "deleteLeft"
    ]
    }
    ]
    这是 replacerules宏中使用的规则:
    "replacerules.rules": {

    "Prepare file list for task open": {
    "find": ["(\\\\)", "^(.+)$"],
    "replace": ["\\\\", "\"'$1'\","]
    }
    }
    它只是将裸文件列表修改为我们可以在任务中使用的内容。这是运行该宏的键绑定(bind)(keybindings.json):
    {
    "key": "ctrl+shift+i",
    "command": "extension.multiCommand.execute",
    "args": {
    "command": "multiCommand.getOpenedEditorsForTaskOpenAll"
    },
    }
    您应该已经能够对此进行测试,以查看它是否会将格式化的文件列表转储到您的光标在当前文本编辑器中的任何位置。

    一次打开所有这些文件的一种方法是将它们放入一个任务中(在 tasks.json 中):
    {
    "label": "Open snapshot 1",
    "command": "code",
    "args": [

    ],
    "type": "shell",
    "problemMatcher": [],
    "dependsOrder": "sequence",
    "dependsOn": [ "close all editors" ]
    },

    {
    "label": "close all editors",
    "command": "${command:workbench.action.closeAllEditors}",
    "type": "shell",
    "problemMatcher": []
    },
    你看到任务 Open snapshot 1依赖于 close all editors任务,以便首先发生。在 Open snapshot 1命令是 code打开所有 arg 文件。将光标置于 args数组,这是宏将写入格式正确的要打开的文件列表的地方。演示:
    demo of inserting opened files into a task
    如果要更新该文件列表,只需选择它们并重新运行宏即可。您现在可以设置多个 Open snapshot <n>随心所欲地完成任务(带有您想要给它们的任何标签)。
    现在,要触发任务,我们还将使用键绑定(bind):
      {
    "key": "alt+s 1",
    "command": "workbench.action.tasks.runTask",
    "args": "Open snapshot 1"
    },
    {
    "key": "alt+s 2",
    "command": "workbench.action.tasks.runTask",
    "args": "Open snapshot 2"
    },
    等等。如前所述,运行此任务将首先运行关闭所有当前打开文件的依赖任务。如果您只想打开一批经常使用的文件而不关闭其他文件,只需删除 "dependsOn": [ "close all editors" ]选项。
    这是关闭打开文件和打开 snapshot 任务的最终演示。文件(我只是稍微更改了上面的文件列表以使其看起来不同)。
    demo of tasks opening and closing files

    要记住的两件事:
    (1) Editor > Open Editors: Visible必须使用足够高的数字启用设置以显示所有打开的文件。 Open Editors可以隐藏,所以如果你不想,你不必一直看它,但它会被宏自动打开 - 这是无法避免的。您可以在演示中看到它打开。它可以通过其上下文菜单隐藏。
    (2) 终端被使用,所以你看到它打开了。

    看起来像很多设置,但操作实际上非常简单 - 只需记住几个键绑定(bind)。

    关于visual-studio-code - VSCode : Store and reopen a group of file tabs so that I reset a specific environment in the future,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62808043/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com