Написал такой вот скриптик:
#!/usr/bin/env python
# Запрос тут подсмотрел
# https://marketplace.visualstudio.com/search?target=VSCode&category=All%20categories&sortBy=Downloads
import argparse, json, requests
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('-n', help='Number of pages', default=1, type=int)
args = parser.parse_args()
raw = r'''{"assetTypes":["Microsoft.VisualStudio.Services.Icons.Default","Microsoft.VisualStudio.Services.Icons.Branding","Microsoft.VisualStudio.Services.Icons.Small"],"filters":[{"criteria":[{"filterType":8,"value":"Microsoft.VisualStudio.Code"},{"filterType":10,"value":"target:\"Microsoft.VisualStudio.Code\" "},{"filterType":12,"value":"37888"}],"direction":2,"pageSize":54,"pageNumber":1,"sortBy":4,"sortOrder":0,"pagingToken":null}],"flags":870}'''
payload = json.loads(raw)
extensions = []
for i in range(1, args.n + 1):
payload_ = payload.copy()
payload_['pageNumber'] = i
r = requests.post('https://marketplace.visualstudio.com/_apis/public/gallery/extensionquery', json=payload_, headers={'Accept': 'application/json;api-version=5.1-preview.1;excludeUrls=true'})
data = r.json()
for extension in data['results'][0]['extensions']:
name = '.'.join((extension['publisher']['publisherName'], extension['extensionName']))
extensions += [name]
cmd = 'code ' + ' '.join(map(lambda x: '--install-extension ' + x, extensions))
print(cmd)
./gen_code_install.py -n 2 | bash
Параметр n - это сколько страниц с популярными расширениями нужно поставить. Api сайта отдает не более 54 расширений на страницу (проверял). Мне хватило трех страниц. Предыстория такова: vscode в базовой поставке не лучше любого текстового редактора и пока не поставишь штук 50 расширений он конфеткой не станет. Ненужное проще отключить чем совершить пару сотен переходов на страницы с разворачиванием редактора и выполнением команд.
На гитхабе лежит тут.