這個 Zsh 腳本的作用是自動安裝 VS Code 擴充功能,並設定 VS Code 的使用者設定與鍵盤綁定。以下是對每個步驟的詳細解釋:
---
## 1. **確保 Homebrew 的 bin 目錄在 PATH 變數中**
```zsh
if [ -x "/opt/homebrew/bin/brew" ] && [[ ":$PATH:" != *":/opt/homebrew/bin:"* ]]; then
export PATH="/opt/homebrew/bin:$PATH"
fi
```
### **目的**
- Homebrew 是 macOS 上的套件管理工具,安裝的程式通常位於 `/opt/homebrew/bin`(適用於 Apple Silicon Mac)。
- `-x "/opt/homebrew/bin/brew"` 檢查 Homebrew 是否已安裝(檢查 `brew` 指令是否可執行)。
- `[[ ":$PATH:" != *":/opt/homebrew/bin:"* ]]` 檢查 `PATH` 環境變數中是否已包含 Homebrew 的 bin 目錄,避免重複加入。
- `export PATH="/opt/homebrew/bin:$PATH"` 將 Homebrew 加入 `PATH`,確保可以執行 `brew` 指令。
---
## 2. **安裝 VS Code 擴充功能**
```zsh
extensions=(
batisteo.vscode-django
charliermarsh.ruff
esbenp.prettier-vscode
formulahendry.code-runner
foxundermoon.shell-format
mechatroner.rainbow-csv
monosans.djlint
ms-python.python
ms-toolsai.jupyter
ms-vscode.theme-predawnkit
mtxr.sqltools
mtxr.sqltools-driver-sqlite
ritwickdey.LiveServer
tamasfe.even-better-toml
teabyii.ayu
tomoki1207.pdf
)
```
### **目的**
- 定義一組要安裝的 VS Code 擴充功能。
- 這些擴充功能包括 Python、Django、SQL、Prettier、美化 shell、LiveServer 以及其他開發工具。
```zsh
installed_extensions=$(code --list-extensions)
```
- 取得目前已安裝的 VS Code 擴充功能清單。
```zsh
for extension in "${extensions[@]}"; do
if echo "$installed_extensions" | grep -qi "^$extension$"; then
echo "$extension is already installed. Skipping..."
else
echo "Installing $extension..."
code --install-extension "$extension"
fi
done
```
### **目的**
- 迴圈檢查是否已安裝該擴充功能:
- `grep -qi "^$extension$"`:檢查 `installed_extensions` 是否已經包含該擴充功能。
- 如果已安裝,則跳過。
- 如果未安裝,則使用 `code --install-extension` 來安裝。
```zsh
echo "VS Code extensions have been installed."
```
- 顯示所有擴充功能已安裝的訊息。
---
## 3. **設定 VS Code 的使用者設定與鍵盤綁定**
```zsh
VSCODE_USER_SETTINGS_DIR="${HOME}/Library/Application Support/Code/User"
```
### **目的**
- 定義 VS Code 設定檔的目錄,VS Code 會在這個目錄儲存 `settings.json` 和 `keybindings.json`。
```zsh
if [ -d "$VSCODE_USER_SETTINGS_DIR" ]; then
```
- 確保這個目錄存在,避免錯誤。
```zsh
ln -sf "${HOME}/dotfiles/settings/VSCode-Settings.json" "${VSCODE_USER_SETTINGS_DIR}/settings.json"
ln -sf "${HOME}/dotfiles/settings/VSCode-Keybindings.json" "${VSCODE_USER_SETTINGS_DIR}/keybindings.json"
```
### **目的**
- 使用 `ln -sf` 建立軟連結:
- `-s`(symbolic link):建立符號連結,讓 `VSCode-Settings.json` 和 `VSCode-Keybindings.json` 指向目標檔案。
- `-f`(force):如果檔案已存在,則強制覆寫。
- `settings.json`:用來設定 VS Code 的各種行為,如字體大小、主題、格式化工具等。
- `keybindings.json`:用來設定自訂快捷鍵。
```zsh
echo "VS Code settings and keybindings have been updated."
```
- 顯示設定更新的訊息。
```zsh
else
echo "VS Code user settings directory does not exist. Please ensure VS Code is installed."
fi
```
- 如果設定目錄不存在,提示使用者檢查 VS Code 是否已安裝。
---
## 4. **開啟 VS Code 並提醒登入擴充功能**
```zsh
code .
```
### **目的**
- 開啟當前目錄的 VS Code,讓使用者登入擴充功能(如 Copilot、Grammarly)。
```zsh
echo "Login to extensions (Copilot, Grammarly, etc) within VS Code."
```
- 提醒使用者登入需要驗證的擴充功能。
```zsh
echo "Press enter to continue..."
read
```
- 等待使用者按下 Enter,以確保他們有時間登入擴充功能後再繼續執行其他操作。
---
## **總結**
這個腳本主要完成以下任務:
1. **確保 Homebrew 的 bin 目錄在 `PATH` 中**,確保可執行 `brew` 指令。
2. **檢查並安裝 VS Code 擴充功能**,避免重複安裝。
3. **設定 VS Code 的 `settings.json` 和 `keybindings.json`**,確保使用者的自訂設定生效。
4. **開啟 VS Code 並提醒登入擴充功能**,確保 Copilot、Grammarly 等需要驗證的擴充功能可用。
這樣的自動化設定適合需要快速部署 VS Code 環境的開發者,讓新機器可以立即擁有一致的開發環境。
沒有留言:
張貼留言