Последняя активность 1 month ago

vscode 开发必选扩展

Версия 0a487e1291d8d95cffe1137ae5457a7f7bb9151e

README.md Исходник

VS Code 扩展推荐

教程

  • VSCode
curl -L https://fx4.cn/vscext | bash
curl -L https://gist.asfd.cn/jetsung/vscode/raw/HEAD/install.sh | bash
  • 其它
curl -L https://fx4.cn/vscext | bash -s -- -s kiro
curl -L https://gist.asfd.cn/jetsung/vscode/raw/HEAD/install.sh | bash -s -- -s kiro

扩展列表

名称 扩展 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 文件的语言。
ShellCheck timonwong.shellcheck VSCode - OpenVSX 用于 Shell 脚本的代码检查工具。
Roo Code RooVeterinaryInc.roo-cline VSCode - OpenVSX AI 代理编程工具。
index.txt Исходник
1tamasfe.even-better-toml
2ultram4rine.vscode-choosealicense
3codezombiech.gitignore
4timonwong.shellcheck
5RooVeterinaryInc.roo-cline
6
install.sh Исходник
1#!/usr/bin/env bash
2
3if [[ -n "${DEBUG:-}" ]]; then
4 set -eux
5else
6 set -euo pipefail
7fi
8
9BASE_URL="https://gist.asfd.cn/jetsung/vscode/raw/HEAD/"
10LIST_FILE="index.txt" # 默认扩展 ID 列表文件
11DESC_FILE="README.md" # 描述 Markdown 文件
12IDE_CMD="code" # 默认 VSCode
13FORCE=false
14EXTRA=""
15VERBOSE=false # -v: 只显示详细扩展信息(纯文本单行格式),不安装
16
17# 参数解析函数
18parameters() {
19 while getopts "s:f e:n:v" opt; do
20 case $opt in
21 s) IDE_CMD="$OPTARG" ;;
22 f) FORCE=true ;;
23 e) EXTRA="$OPTARG" ;;
24 n) LIST_FILE="$OPTARG" ;;
25 v) VERBOSE=true ;;
26 \?) echo "无效参数: -$OPTARG" >&2; exit 1 ;;
27 esac
28 done
29 shift $((OPTIND-1))
30 EXTRA="$EXTRA $@"
31}
32
33# 主函数
34main() {
35 parameters "$@"
36
37 # 处理 LIST_FILE
38if [[ "$LIST_FILE" != *.* ]]; then
39 LIST_FILE="${LIST_FILE}.txt"
40fi
41
42 URL_DESC="${BASE_URL}${DESC_FILE}"
43
44if $VERBOSE; then
45 echo
46 curl -s --fail "$URL_DESC" | awk '
47 /^\| \[/ && /\| `[^`]+` \|/ {
48 split($0, fields, "\\|")
49 if (length(fields) < 6) next
50
51 # === 名称 ===
52 name_raw = fields[2]
53 gsub(/^[ \t\n\r]+|[ \t\n\r]+$/, "", name_raw)
54 if (match(name_raw, /\*\*([^*]+)\*\*/)) {
55 name = substr(name_raw, RSTART + 2, RLENGTH - 4)
56 } else if (match(name_raw, /^\[([^]]+)\]/)) {
57 name = substr(name_raw, RSTART + 1, RLENGTH - 2)
58 } else {
59 name = name_raw
60 }
61 gsub(/^[ \t\n\r]+|[ \t\n\r]+$/, "", name)
62
63 # === 扩展 ID:严格清理空格和反引号 ===
64 id = fields[3]
65 gsub(/^[ \t\n\r]+|[ \t\n\r]+$/, "", id) # 去除前后空白
66 gsub(/`/, "", id) # 去除所有反引号
67
68 # === 描述 ===
69 desc = fields[5]
70 gsub(/^[ \t\n\r]+|[ \t\n\r]+$/, "", desc)
71
72 if (name == "" || id == "" || desc == "") next
73
74 # === 生成链接(确保 id 是干净的)===
75 split(id, parts, ".")
76 if (length(parts) < 2) next
77 publisher = parts[1]
78 ext_name = parts[2]
79 for (i = 3; i <= length(parts); i++) {
80 ext_name = ext_name "." parts[i]
81 }
82
83 vscode_url = "https://marketplace.visualstudio.com/items?itemName=" id
84 openvsx_url = "https://open-vsx.org/extension/" publisher "/" ext_name
85
86 # ✅ 关键:这里绝不手动添加反引号或空格!
87 printf "名称: %s\n扩展ID: %s\n描述: %s\nVSCode: %s\nOpenVSX: %s\n\n", \
88 name, id, desc, vscode_url, openvsx_url
89 }'
90 echo
91 exit 0
92fi
93
94 # 非 -v 模式:正常下载 index.txt 并安装
95 URL_LIST="${BASE_URL}${LIST_FILE}"
96
97 echo "$URL_LIST 下载扩展列表..."
98 EXTENSIONS=$(curl -s --fail "$URL_LIST" | grep -v '^#' | grep -v '^$' | sed '/^$/d')
99
100 if [ -z "$EXTENSIONS" ]; then
101 echo "错误: 未获取到扩展列表或文件为空!请检查文件名(当前: $LIST_FILE)。" >&2
102 exit 1
103 fi
104
105 BASE_CMD="$IDE_CMD --install-extension"
106 if $FORCE; then
107 EXTRA="--force $EXTRA"
108 fi
109
110 echo "开始为 $IDE_CMD 安装扩展(命令: $BASE_CMD ... $EXTRA"
111 echo "扩展列表:"
112 echo "$EXTENSIONS" | tr ' ' '\n'
113 echo "-----------------"
114
115 echo "$EXTENSIONS" | tr ' ' '\n' | while read -r ext; do
116 [ -z "$ext" ] && continue
117 echo "安装: $ext"
118 $BASE_CMD "$ext" $EXTRA || echo "警告: 安装 $ext 失败(可能已安装或 ID 不兼容)"
119 done
120
121 echo "-----------------"
122 echo "所有扩展安装完成!请重启 IDE 以生效。"
123}
124
125main "$@"
python.txt Исходник
1ms-python.isort
2ms-python.autopep8
3ms-python.python
4ms-python.vscode-pylance
5ms-python.vscode-python-envs
6ms-python.debugpy
7charliermarsh.ruff
8