我搞砸了,删除了一个不该卸载的扩展名但被卸载的扩展名都还在文件夹里我不想把我卸载的所有东西都手动安装回去有没有办法把所有的东西都安装上去
我尝试了许多命令来获取扩展并安装它们,但只得到已经安装的扩展代码—list-extensions—show-versions>extensions4.txt然后我试着获取所有文件夹的名称但格式需要是{name}@{version}用于安装但是文件夹没有相应的命名所以我不知道该怎么做它们太多了我不知道如何(在windows上)
您可以使用jq
执行以下操作。要安装${HOME}/.vscode/extenions
文件夹中以目录命名的扩展,请尝试以下操作:
find "${HOME}/.vscode/extensions" -maxdepth 2 -name 'package.json' | xargs -I % jq -r '.publisher+"."+.name' -- % | xargs -I % code '--install-extension %'
这是一种有点笨拙的方法,依赖于UNIX的find
命令(抱歉)。如果你在Windows上做开发工作,你可能已经有Git Bash了,所以你可以在那里运行它。
Windows(CMD)有点bug,一些扩展无法安装
转到vs code的extensions文件夹
打开它打开命令提示符并将CD放入扩展文件夹
执行命令
dir "C:Users%USERPROFILE%.vscodeextensions" /b > extensions.txt
你将得到一个包含文件夹中所有子文件夹的文件,但名称将采用这种格式{name}-{version}并且我们需要{name}@{version}来正确安装所以我们需要使用这个python脚本
with open("C:\Users\%USERPROFILE%\.vscode\extensions\extensions.txt", "r") as f:
filenames = f.readlines()
for filename in filenames:
filename = filename.strip() # Remove newline character at the end of the line
name_parts = filename.split('-') # Split the filename by the dash character
version_index = None
for i, part in enumerate(name_parts):
if part[0].isdigit(): # Check if the first character of the part is a digit
version_index = i # Save the index of the part that contains the version number
break # Stop looking for the version number
if version_index is not None:
name_parts[version_index] = '@' + name_parts[version_index] # Add @ symbol before the version number
new_name = '-'.join(name_parts).replace('@.', '.') # Create the new filename
new_name1 = new_name.replace("-@", "@")
print(new_name1)
将输出复制到终端,该输出将是{name}@{version},并将其保存到文件夹
中相同的extensions.txt文件中。然后返回CMD并运行以下命令
for /f "usebackq delims=" %i in (extensions.txt) do code --install-extension %i
所有扩展将开始安装
重要细节当您运行第一个命令时,文件可能有1或2个文件在扩展文件夹中,如扩展。所以从extensions.txt文件中删除