Última actividad 1 month ago

vscode 开发必选扩展

Revisión 58701cd2ff36705259e95021e19dcc42dede78d8

README.md Sin formato

VS Code 扩展推荐

扩展列表

名称 扩展 ID 链接 描述
Even Better TOML tamasfe.even-better-toml VSCode - OpenVSX 功能齐全的 TOML 支持
Choose a License ultram4rine.vscode-choosealicense VSCode - OpenVSX 为你的项目选择一个许可证
gitignore codezombiech.gitignore VSCode - OpenVSX https://github.com/github/gitignore 仓库拉取 .gitignore 模板。支持.gitignore 文件的语言。
index.txt Sin formato
1tamasfe.even-better-toml
2ultram4rine.vscode-choosealicense
3codezombiech.gitignore
4
install Sin formato
1#!/usr/bin/env bash
2
3BASE_URL="https://gist.asfd.cn/jetsung/vscode/raw/HEAD/"
4LIST_FILE="index.txt" # 默认扩展 ID 列表文件
5DESC_FILE="README.md" # 描述 Markdown 文件
6IDE_CMD="code" # 默认 VSCode
7FORCE=false
8EXTRA=""
9VERBOSE=false # -v: 只显示详细扩展信息(纯文本单行格式),不安装
10
11# 参数解析函数
12parameters() {
13 while getopts "s:f e:n:v" opt; do
14 case $opt in
15 s) IDE_CMD="$OPTARG" ;;
16 f) FORCE=true ;;
17 e) EXTRA="$OPTARG" ;;
18 n) LIST_FILE="$OPTARG" ;;
19 v) VERBOSE=true ;;
20 \?) echo "无效参数: -$OPTARG" >&2; exit 1 ;;
21 esac
22 done
23 shift $((OPTIND-1))
24 EXTRA="$EXTRA $@"
25}
26
27# 主函数
28main() {
29 parameters "$@"
30
31 # 处理 LIST_FILE
32if [[ "$LIST_FILE" != *.* ]]; then
33 LIST_FILE="${LIST_FILE}.txt"
34fi
35
36 URL_DESC="${BASE_URL}${DESC_FILE}"
37
38if $VERBOSE; then
39 echo
40 curl -s --fail "$URL_DESC" | awk '
41 # 匹配数据行:以 | [ 开头,且包含反引号 ID
42 /^\| \[/ && /\| `[^`]+` \|/ {
43 split($0, fields, "\\|")
44 if (length(fields) < 6) next
45
46 # === 名称 ===
47 name_raw = fields[2]
48 gsub(/^[ \t]+|[ \t]+$/, "", name_raw)
49 if (match(name_raw, /\*\*([^*]+)\*\*/)) {
50 name = substr(name_raw, RSTART + 2, RLENGTH - 4)
51 } else if (match(name_raw, /^\[([^]]+)\]/)) {
52 name = substr(name_raw, RSTART + 1, RLENGTH - 2)
53 } else {
54 name = name_raw
55 }
56 gsub(/^[ \t]+|[ \t]+$/, "", name)
57
58 # === 扩展 ID ===
59 id = fields[3]
60 gsub(/^[ \t]+|[ \t]+$/, "", id)
61 gsub(/`/g, "", id)
62
63 # === 描述 ===
64 desc = fields[5]
65 gsub(/^[ \t]+|[ \t]+$/, "", desc)
66
67 if (name == "" || id == "" || desc == "") next
68
69 # === 生成链接 ===
70 # 拆分 publisher.extension
71 split(id, parts, ".")
72 if (length(parts) < 2) next
73 publisher = parts[1]
74 ext_name = ""
75 for (i = 2; i <= length(parts); i++) {
76 if (i > 2) ext_name = ext_name "."
77 ext_name = ext_name parts[i]
78 }
79
80 vscode_url = "https://marketplace.visualstudio.com/items?itemName=" id
81 openvsx_url = "https://open-vsx.org/extension/" publisher "/" ext_name
82
83 printf "名称: %s\n扩展ID: %s\n描述: %s\nVSCode: %s\nOpenVSX: %s\n\n", \
84 name, id, desc, vscode_url, openvsx_url
85 }'
86 echo
87 exit 0
88fi
89
90 # 非 -v 模式:正常下载 index.txt 并安装
91 URL_LIST="${BASE_URL}${LIST_FILE}"
92
93 echo "从 $URL_LIST 下载扩展列表..."
94 EXTENSIONS=$(curl -s --fail "$URL_LIST" | grep -v '^#' | grep -v '^$' | sed '/^$/d')
95
96 if [ -z "$EXTENSIONS" ]; then
97 echo "错误: 未获取到扩展列表或文件为空!请检查文件名(当前: $LIST_FILE)。" >&2
98 exit 1
99 fi
100
101 BASE_CMD="$IDE_CMD --install-extension"
102 if $FORCE; then
103 EXTRA="--force $EXTRA"
104 fi
105
106 echo "开始为 $IDE_CMD 安装扩展(命令: $BASE_CMD ... $EXTRA)"
107 echo "扩展列表:"
108 echo "$EXTENSIONS" | tr ' ' '\n'
109 echo "-----------------"
110
111 echo "$EXTENSIONS" | tr ' ' '\n' | while read -r ext; do
112 [ -z "$ext" ] && continue
113 echo "安装: $ext"
114 $BASE_CMD "$ext" $EXTRA || echo "警告: 安装 $ext 失败(可能已安装或 ID 不兼容)"
115 done
116
117 echo "-----------------"
118 echo "所有扩展安装完成!请重启 IDE 以生效。"
119}
120
121main "$@"
python.txt Sin formato
1ms-python.isort
2ms-python.autopep8
3ms-python.python
4ms-python.vscode-pylance
5ms-python.vscode-python-envs
6ms-python.debugpy
7charliermarsh.ruff
8