- Получить «снимок» открытых в данный момент файлов.
- Сохранить где-нибудь этот снимок; упростить изменение.
- Используйте снимок, чтобы открыть все его файлы; сначала закройте все остальные файлы.
- Возможность делать несколько снимков и легко вызывать каждый из них.
(1) сложнее, чем вы думаете. Существует ряд проблем с vscode, связанных с поиском только в открытых в данный момент файлах, и проблема остается в основном нерешенной через несколько лет по этой причине.
Демо: получить относительные пути всех открытых файлов (к сожалению, создание gif программное обеспечение плохо справилось с записью всех нажатий клавиш, используемых во всех этих демонстрациях):

Holy crap, what just happened. One keybinding and they are collected and formatted in a specific way.
A number of things happened. The only way I know of to efficiently get a list of opened files (maybe true even in an extension) is through the "Open Editors" view. So we
(a) focus that Open Editors view,
(b) select the entire list, and fortunately there is a
(c) copyRelativeFilePath
command (or copyPath
for the full path) that will get them all in a list.
But the list initially looks like:
1.html
simple\\gulpfile.js
test1.txt
which isn't going to do us much good. But it is now on the ClipBoard
and there is an extension, Replace Rules , которые могут запускать содержимое буфера обмена через серию регулярных выражений (без изменения содержимое буфера обмена) и вставьте результат куда-нибудь. Таким образом, вам понадобится это расширение и расширение макроса, здесь используется мульти-команда для выполнения всех шагов. Вот макрос, который входит в ваши настройки. 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'\","]
}
}
Оно просто изменяет это пустой список файлов во что-то, что мы можем использовать в задаче. Вот комбинация клавиш для запуска этого макроса:
{
"key": "ctrl+shift+i",
"command": "extension.multiCommand.execute",
"args": {
"command": "multiCommand.getOpenedEditorsForTaskOpenAll"
},
}
Вы должны уже иметь возможность протестировать это, чтобы увидеть, сбрасывает ли он список форматированных файлов туда, где находится ваш курсор в текущем текстовом редакторе.
Один из способов открыть все эти файлы одновременно - поместить их в задачу (в задачах. 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
, и именно здесь макрос будет записывать правильно отформатированный список файлов для открытия. Демо:

If you want to update that file list you can just select them and rerun the macro. And you can now set up as many Open snapshot
tasks as you want (with whatever labels you want to give them).
Now, to trigger the task we will use a keybinding as well:
{
"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"
},
etc. As noted earlier, running this task will first run the dependent task which closes all currently opened files. If you just wanted to open a batch of files you frequently use without closing the others, just remove the "dependsOn": [ "close all editors" ]
option.
Here is a final demo of the task closing the open files and opening the snapshot
files (I just changed the file list above a little to make it look different).
демонстрация задач открытия и закрытия файлов
Следует помнить две вещи:
(1) параметр Editor > Open Editors: Visible
должен быть включен с числом, достаточным для отображения всех ваших открытых файлов. Open Editors
можно скрыть, чтобы вам не приходилось смотреть на него все время, если вы не хотите, но он будет автоматически открыт макросом - этого нельзя избежать. Вы можете увидеть его открытие в демонстрациях. Его можно скрыть с помощью контекстного меню.
(2) Терминал используется, поэтому вы видите, что он открывается.
Кажется, требуется много настроек, но операция на самом деле довольно проста - нужно запомнить всего несколько комбинаций клавиш.