Skip to main content

VS Code Setup

This page documents my VS Code configuration, including editor preferences, formatting rules, themes, icons, terminal behavior, and custom color overrides.


Theme Overview​

Icon Themes​

{
"workbench.iconTheme": "material-icon-theme",
"workbench.productIconTheme": "material-product-icons"
}

Extensions Used

  • Material Icon Theme
  • Material Product Icons

Purple Accent Theme​

Primary accent color:

#8500cc

Secondary accents:

#7900bb
#8700d3
#c457ff
#d485ff
#a600ff44

Custom UI Colors​

{
"button.background": "#8500cc",
"button.hoverBackground": "#7900bb",
"focusBorder": "#8500cc",
"badge.background": "#8500cc",
"progressBar.background": "#8500cc",
"activityBar.activeBorder": "#8500cc",
"activityBarBadge.background": "#8500cc",
"panelTitle.activeBorder": "#8500cc",
"menu.selectionBackground": "#8500cc",
"statusBar.debuggingBackground": "#8500cc"
}
{
"textLink.foreground": "#d485ff",
"textLink.activeForeground": "#c457ff"
}

Selection Colors​

{
"editor.selectionBackground": "#44475A",
"list.activeSelectionBackground": "#a600ff44",
"pickerGroup.border": "#a600ff44"
}

Terminal Colors​

{
"terminal.ansiBrightGreen": "#00eea2",
"terminal.ansiBrightBlue": "#c457ff",
"terminalCommandDecoration.successBackground": "#00eea2"
}

Editor Preferences​

Linked Editing​

Automatically rename matching HTML/JSX tags.

{
"editor.linkedEditing": true
}

Inline Suggestions​

{
"editor.inlineSuggest.suppressSuggestions": true
}

Diff Editor​

{
"diffEditor.ignoreTrimWhitespace": false
}

Formatting​

Prettier​

{
"prettier.semi": false
}

Default Formatters​

LanguageFormatter
JavaScriptesbenp.prettier-vscode
JavaScript Reactesbenp.prettier-vscode
TypeScriptesbenp.prettier-vscode
TypeScript Reactesbenp.prettier-vscode
HTMLesbenp.prettier-vscode
CSSesbenp.prettier-vscode
Vueesbenp.prettier-vscode
JSONCesbenp.prettier-vscode
JSONvscode.json-language-features
MarkdownDavidAnson.vscode-markdownlint
XMLredhat.vscode-xml
Liquidsissel.shopify-liquid

Terminal Configuration​

Send Keybindings to Shell​

{
"terminal.integrated.sendKeybindingsToShell": true
}

Terminal Suggestions​

{
"terminal.integrated.suggest.enabled": true
}

Code Runner​

{
"code-runner.runInTerminal": true
}

Vim Extension​

{
"vim.cursorStylePerMode.normal": "line",
"vim.startInInsertMode": true
}

AI & Productivity​

Codeium​

{
"codeium.enableConfig": {
"*": true,
"plaintext": true,
"properties": true,
"markdown": true
}
}

Chat Instructions​

Automatically loads custom instruction files from:

.github/instructions

Plus temporary Postman-generated instruction files.


Remote Development​

{
"remote.autoForwardPortsSource": "hybrid"
}

{
"workbench.secondarySideBar.defaultVisibility": "hidden"
}

Prisma​

Disable Prisma Data Platform notifications:

{
"prisma.showPrismaDataPlatformNotification": false
}

Custom Dictionary​

Words added to cSpell:

COURSERA
editability
favourite
Favourited
freemium
Hackathon
Hadi
INACTVE
KAHOOT
Matplotlib
Photoshop
pygame
QUIZLET
skyfall
SOCRATIVE
strech
Studica
Subpages
Tkinter
vercel
Vuetify
Wireframe

YAML Schemas​

Bitbucket Pipelines schema:

{
"yaml.schemas": {
"...pipelines-schema.json": "bitbucket-pipelines.yml"
}
}

Installed Extensions​

Full list via code --list-extensions:

anthropic.claude-code
bradlc.vscode-tailwindcss
catppuccin.catppuccin-vsc
codeium.codeium
coderabbit.coderabbit-vscode
davidanson.vscode-markdownlint
dbaeumer.vscode-eslint
dsznajder.es7-react-js-snippets
esbenp.prettier-vscode
formulahendry.auto-rename-tag
github.codespaces
github.remotehub
mechatroner.rainbow-csv
ms-azuretools.vscode-containers
ms-python.debugpy
ms-python.python
ms-python.vscode-pylance
ms-python.vscode-python-envs
ms-vscode-remote.remote-containers
ms-vscode-remote.remote-ssh
ms-vscode-remote.remote-ssh-edit
ms-vscode.remote-explorer
ms-vscode.remote-repositories
ms-vsliveshare.vsliveshare
pkief.material-icon-theme
pkief.material-product-icons
postman.postman-for-vscode
ritwickdey.liveserver
saoudrizwan.claude-dev
snyk-security.snyk-vulnerability-scanner
streetsidesoftware.code-spell-checker
tomoki1207.pdf
usernamehw.errorlens

To restore on a new machine:

code --list-extensions | % { code --install-extension $_ }

(On macOS/Linux, save the list to a file and loop over it with xargs -n 1 code --install-extension.)


Keybindings​

Custom overrides in keybindings.json:

[
{
"key": "ctrl+m",
"command": "editor.emmet.action.balanceOut"
},
{
"key": "ctrl+shift+u",
"command": "editor.action.transformToUppercase",
"when": "editorTextFocus"
},
{
"key": "ctrl+shift+l",
"command": "editor.action.transformToLowercase",
"when": "editorTextFocus"
}
]

MCP Servers​

Claude Code (~/.claude.json)​

ServerTypeNotes
wmuxlocal (node)bundled with wmux app install
context7httpneeds CONTEXT7_API_KEY env var — stored separately, not here
githubstdio (npx)needs GITHUB_PERSONAL_ACCESS_TOKEN env var — stored separately, not here
chrome-devtoolsstdio (npx)chrome-devtools-mcp@latest
playwrightstdio (npx)@playwright/mcp@latest

Secrets for context7 and github were rotated after being pasted into chat on 2026-07-18 — re-generate fresh ones and store in a password manager, not in this doc.

VS Code (%APPDATA%\Code\User\mcp.json)​

ServerTypeVersion
context7 (Upstash)stdio (npx)1.0.31
chrome-devtoolsstdio (npx)1.6.0
github-mcp-serverhttp1.6.0
playwrightstdio (npx)latest

Git Config​

user.name=Abdul Khan
user.email=ahkn63@gmail.com
filter.lfs.required=true
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
init.defaultbranch=main

SSH Config​

Host cs.utm.utoronto.ca
HostName cs.utm.utoronto.ca
User khanab72

Node / Package Managers​

  • Node: v22.22.3 (via nvm) — other versions installed: 22.0.0, 18.14.2
  • uv: 0.11.21
  • Python: not installed as a standalone binary (Store alias only)

GitHub CLI​

Logged in to github.com as AbdulDevHub
Protocol: https
Scopes: gist, read:org, repo, workflow

Full settings.json​

Expand settings.json
{
"terminal.integrated.sendKeybindingsToShell": true,
"editor.inlineSuggest.suppressSuggestions": true,
"codeium.enableConfig": {
"*": true,
"plaintext": true,
"properties": true,
"markdown": true
},
"[typescriptreact]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[markdown]": {
"editor.defaultFormatter": "DavidAnson.vscode-markdownlint"
},
"editor.linkedEditing": true,
"[javascriptreact]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[html]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[css]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"cSpell.userWords": [
"COURSERA",
"editability",
"favourite",
"Favourited",
"freemium",
"Hackathon",
"Hadi",
"INACTVE",
"KAHOOT",
"Matplotlib",
"Photoshop",
"pygame",
"QUIZLET",
"skyfall",
"SOCRATIVE",
"strech",
"Studica",
"Subpages",
"Tkinter",
"vercel",
"Vuetify",
"Wireframe"
],
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[json]": {
"editor.defaultFormatter": "vscode.json-language-features"
},
"yaml.schemas": {
"file:///c%3A/Users/kokok/.vscode/extensions/atlassian.atlascode-3.0.10/resources/schemas/pipelines-schema.json": "bitbucket-pipelines.yml"
},
"code-runner.runInTerminal": true,
"workbench.colorCustomizations": {
"button.background": "#8500cc",
"button.hoverBackground": "#7900bb",
"focusBorder": "#8500cc",
"editor.selectionBackground": "#44475A",
"list.activeSelectionBackground": "#a600ff44",
"badge.background": "#8500cc",
"progressBar.background": "#8500cc",
"tab.activeBorderTop": "#8500cc",
"extensionIcon.verifiedForeground": "#b224fffe",
"notificationsInfoIcon.foreground": "#8500cc",
"welcomePage.progress.foreground": "#8500cc",
"textLink.foreground": "#d485ff",
"textLink.activeForeground": "#c457ff",
"statusBarItem.remoteBackground": "#8500cc",
"statusBarItem.remoteHoverBackground": "#8700d3",
"inputValidation.infoBorder": "#8500cc",
"activityBar.activeBorder": "#8500cc",
"activityBarBadge.background": "#8500cc",
"panelTitle.activeBorder": "#8500cc",
"pickerGroup.border": "#a600ff44",
"terminal.ansiBrightGreen": "#00eea2",
"terminal.ansiBrightBlue": "#c457ff",
"terminalCommandDecoration.successBackground": "#00eea2",
"menu.selectionBackground": "#8500cc",
"statusBar.debuggingBackground": "#8500cc"
},
"workbench.iconTheme": "material-icon-theme",
"workbench.productIconTheme": "material-product-icons",
"[vue]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[jsonc]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"vim.cursorStylePerMode.normal": "line",
"vim.startInInsertMode": true,
"prisma.showPrismaDataPlatformNotification": false,
"prettier.semi": false,
"[xml]": {
"editor.defaultFormatter": "redhat.vscode-xml"
},
"remote.autoForwardPortsSource": "hybrid",
"diffEditor.ignoreTrimWhitespace": false,
"[liquid]": {
"editor.defaultFormatter": "sissel.shopify-liquid"
},
"terminal.integrated.suggest.enabled": true,
"chat.instructionsFilesLocations": {
".github/instructions": true,
"C:\\Users\\kokok\\AppData\\Local\\Temp\\postman-collections-post-response.instructions.md": true,
"C:\\Users\\kokok\\AppData\\Local\\Temp\\postman-collections-pre-request.instructions.md": true,
"C:\\Users\\kokok\\AppData\\Local\\Temp\\postman-folder-post-response.instructions.md": true,
"C:\\Users\\kokok\\AppData\\Local\\Temp\\postman-folder-pre-request.instructions.md": true,
"C:\\Users\\kokok\\AppData\\Local\\Temp\\postman-http-request-post-response.instructions.md": true,
"C:\\Users\\kokok\\AppData\\Local\\Temp\\postman-http-request-pre-request.instructions.md": true
},
"workbench.secondarySideBar.defaultVisibility": "hidden"
}

Notes​

Things I Like About This Setup​

  • Purple-accented UI
  • Material icons
  • Prettier everywhere
  • Vim insert-mode startup
  • Terminal-focused workflow
  • Codeium enabled across most file types
  • Minimal secondary sidebar usage

Future Improvements​

  • Export extensions list
  • Add keyboard shortcuts
  • Add snippets collection
  • Add favorite VS Code extensions page