VS Code Configuration - Extensions and Settings

Table of Contents
This is my curated list of VS Code extensions that I have installed and its corresponding settings, fully synced on all of my machines. Each extensions has its own purpose and unique perks, I’ll explain it briefly for each item in this list.
I will list all the extensions complete with its name and url link to the marketplace. Another way to install all the extensions in this list quickly is to use a simple python script I made, available as a repository on my GitHub account with my extensions embedded with it.
Editor Enhancements
Built-in settings "editor.suggest.snippetsPreventQuickSuggestions": false,
Code Spell Checker
Spell checking has helped me so much in naming my variables and writing my code. It has also helped me a lot when I’m writing for my posts in markdown so that I don’t misspell anything stupid, paired with Error Lens
it makes a perfect combo for dev bloggers.
Beautify
I only use this to format my html
files, everything else uses Prettier.
"beautify.language": {
"js": {},
"css": [],
"html": ["htm", "html"]
},
"[html]": {
"editor.defaultFormatter": "HookyQR.beautify"
},
EditorConfig
From editorconfig.org, it helps maintain consistent coding styles for multiple developers across various editors and IDEs. A lot of editors should natively support this, but VS Code doesn’t, so this is where the plugin comes in. Below is my current goto config, will be updated frequently as I get used to it.
root = true
[*]
charset = utf-8
end_of_line = lf
indent_size = 2
indent_style = tab
trim_trailing_whitespace = true
[*.md]
indent_size = 4
indent_style = space
[package.json]
indent_style = space
gitignore
Quickly add a .gitignore
file that fetches its data from the GitHub mega repository consisting of multiple ignore files for various file extensions.
GitLens
Makes everything related to Git more convenient and nice.
"gitlens.advanced.telemetry.enabled": false,
"gitlens.codeLens.scopes": ["document", "containers"],
"gitlens.mode.statusBar.enabled": false,
"gitlens.recentChanges.highlight.locations": ["line", "gutter", "overview"],
"gitlens.views.compare.enabled": false,
"gitlens.views.fileHistory.location": "scm",
"gitlens.views.lineHistory.enabled": false,
Image preview
Creates a small preview of the image linked in the sidebar right by the line number, helpful to know if the link in valid. Anything from relative paths to url will be displayed.
Prettier - Code formatter
My choice of code formatter, it supports a huge variety of languages.
"prettier.disableLanguages": ["html", "vue"],
"vetur.format.defaultFormatter.css": "prettier",
"vetur.format.defaultFormatter.js": "prettier",
Remote - WSL
The only extension made to connect VS Code and WSL natively by Microsoft.
Visual Studio IntelliCode
Still has some problems with Python built-in jedi, but it’s way too useful for other languages, especially JavaScript.
"vsintellicode.modify.editor.suggestSelection": "automaticallyOverrodeDefaultValue",
"vsintellicode.python.completionsEnabled": true, // false if you want to use jedi
Editor Visuals
DotENV
Supports .env
files with syntax highlighting.
Error Lens
Super helpful extension that highlights the entire line where a diagnostic is generated with the message printed inline. Always makes any error stands out to quickly debug and fix it.
indent-rainbow
Really helpful and makes reading code easier with the different indentation color coded.
"indentRainbow.errorColor": "rgba(0,0,0,0)",
Material Icon Theme
My icon pack of choice.
Rainbow Brackets
Rainbow Brackets is an alternative to Bracket Pair Colorizer, it’s lightweight and doesn’t heat up the PC much. I read it somewhere that Bracket Pair Colorizer, even when idle sucks up much power, so I immediately changed it to Rainbow Brackets and noticed some improvements with it.
Rainbow CSV
Makes CSV much more easy to read while still being lightweight.
Language Specific
C/C++
Docker
Python
Python Indent
Python Indent makes it so when you enter into a new line, it corrects it for you automatically. Working with other languages is a breeze, you don’t need to worry about the indentation or spacing between it because the formatter will correct itself according to the curly brackets. But, we don’t have that in Python, and one indent difference is the difference between executing in the loop or after the loop.
MagicPython
A supplementary extension for those working with other file extensions that don’t necessarily have py
in it but still relates to Python like .wsgi
Kivy
Used to work with Kivy making cross-platform applications using Python and this has helped a lot with providing syntax highlighting, code snippets, and language server that provides diagnostics.
Java Properties
A simple syntax highlighter for .properties
files.
Gradle Language Support
Add syntax highlighting and language support with autocomplete (Intellisense).
Web Development
Babel JavaScript
Used to have this when I was developing with React (JSX), it supports a lot of things in modern JS ecosystem like highlighting for React, GraphQL, and style-components (CSS-in-JS).
CSS Peek
Allow peeking CSS IDs and classes directly to the respective CSS file. Avoid having to manually search and debug for the selectors by yourself.
css-triggers
Pretty helpful for beginners to learn writing CSS firsthand. It provides information about their costs, what will be affected, and how it will affect it.
ESLint
Integrates ESLint directly to VS Code whenever you have it install globally or locally.
HTML CSS Support
CSS support with class and ID attribute completion.
"css.lint.duplicateProperties": "error",
"css.lint.compatibleVendorPrefixes": "warning",
"css.lint.float": "error",
"css.remoteStyleSheets": [],
Live Server
Quick server for plain HTML and vanilla JavaScript development.
"liveServer.settings.CustomBrowser": "firefox",
"liveServer.settings.donotShowInfoMsg": true,
"liveServer.settings.donotVerifyTags": true,
"liveServer.settings.host": "localhost",
"liveServer.settings.port": 0,
Import Cost
Display the size of the imported package inline after the import.
"importCost.bundleSizeDecoration": "both",
"importCost.javascriptExtensions": ["\\.js?$", "\\.jsx?$"],
"importCost.timeout": 60000,
npm
This extension is to ensure that package.json
is up to date and are not bloated by unused modules. Used with the extension below.
npm Intellisense
This indexes the package.json
and node_modules
folder to autocomplete import
statements when importing or requiring modules.
REST Client
Allows you to send HTTP request and view the response in directly from the file editor. A lightweight and simple alternative for Postman.
"rest-client.enableTelemetry": false,
TSLint
Typescript Lint support by Microsoft.
JS Framework Complementary
Svelte
The official Svelte extension developed by the internal team is available and it’s amazing, I think it’s definitely not a question for anyone writing Svelte in VS Code.
"[svelte]": {
"editor.defaultFormatter": "svelte.svelte-vscode"
},
Svelte 3 Snippets
Using snippets are completely a subjective matter, it’s really your choice whether to use pre-made snippets, create your own, or just write it from scratch every time. At least for me, I quite enjoy having snippets to quickly type in my code.
Vetur
Vue Snippets
Mobile Development
Dart
Dart language support and debugger.
"dart.debugExternalLibraries": false,
"dart.debugSdkLibraries": false,
"dart.previewFlutterUiGuides": true,
"dart.previewFlutterUiGuidesCustomTracking": true,
"[dart]": {
"editor.rulers": [80],
"editor.selectionHighlight": false,
"editor.suggest.snippetsPreventQuickSuggestions": false,
"editor.suggestSelection": "first",
"editor.tabCompletion": "onlySnippets",
"editor.wordBasedSuggestions": false
},
Flutter
A must-have for Flutter development.
Flutter Tree
Like emmet for Flutter.
Pubspec Assist
Easily add dependencies to your Dart / Flutter project.
Miscellaneous
Ascii Tree Generator
Quickly generates tree-like structure of directories and files with ascii. Pretty helpful when working with text-only to visualize something and we don’t need to exit the editor.
Instant Markdown
Instantly preview markdown inside the editor.
"instantmarkdown.autoOpenBrowser": false,
"instantmarkdown.autoCloseServerAndBrowser": false,
Markdown All in One
Complete all in one markdown support.
"[markdown]": {
"editor.defaultFormatter": "yzhang.markdown-all-in-one",
"editor.lineHeight": 24,
"editor.lineNumbers": "off",
"editor.minimap.enabled": false,
"editor.tabSize": 4,
"editor.wordWrap": "wordWrapColumn",
"editor.wordWrapColumn": 96,
"editor.quickSuggestions": {
"other": false,
"comments": false,
"strings": false
},
"files.eol": "\n"
},
markdownlint
Markdown linter for clean markdown writing.
"markdownlint.config": {
"MD013": false,
"MD025": false,
"MD029": false,
"MD033": false,
"MD040": false,
"MD041": false
},
XML & YAML
XML and YAML language support with syntax highlighting by Red Hat.
Complete User Configuration
VS Code Version 1.47.3 {
"beautify.language": {
"js": {},
"css": [],
"html": ["htm", "html"]
},
"breadcrumbs.enabled": true,
"C_Cpp.clang_format_fallbackStyle": "{ BasedOnStyle: Google, IndentWidth: 3, ColumnLimit: 0}",
"css.lint.duplicateProperties": "error",
"css.lint.compatibleVendorPrefixes": "warning",
"css.lint.float": "error",
"css.remoteStyleSheets": [],
"debug.inlineValues": true,
"dart.debugExternalLibraries": false,
"dart.debugSdkLibraries": false,
"dart.previewFlutterUiGuides": true,
"dart.previewFlutterUiGuidesCustomTracking": true,
"diffEditor.ignoreTrimWhitespace": false,
"diffEditor.renderSideBySide": true,
"editor.codeActionsOnSave": {
"source.fixAll.markdownlint": true,
"source.fixAll.eslint": true
},
"editor.cursorSmoothCaretAnimation": true,
"editor.detectIndentation": true,
"editor.fontFamily": "Fira Code Light",
"editor.fontLigatures": true,
"editor.fontSize": 14,
"editor.fontWeight": "300",
"editor.formatOnSave": true,
"editor.insertSpaces": false,
"editor.minimap.enabled": true,
"editor.multiCursorModifier": "ctrlCmd",
"editor.renameOnType": true,
"editor.renderWhitespace": "selection",
"editor.suggest.maxVisibleSuggestions": 15,
"editor.suggest.snippetsPreventQuickSuggestions": false,
"editor.suggestSelection": "first",
"editor.tabSize": 2,
"editor.wordWrap": "bounded",
"editor.wordWrapColumn": 100,
"eslint.options": {
"extensions": [".html", ".js", ".vue", ".jsx"]
},
"eslint.validate": ["javascript", "javascriptreact", "html"],
"explorer.confirmDelete": false,
"explorer.confirmDragAndDrop": false,
"files.associations": {},
"files.autoSave": "off",
"files.encoding": "utf8",
"files.eol": "\n",
"files.exclude": {
"**/.classpath": true,
"**/.project": true,
"**/.settings": true,
"**/.factorypath": true
},
"files.insertFinalNewline": true,
"files.trimFinalNewlines": true,
"git.alwaysShowStagedChangesResourceGroup": true,
"git.autofetch": true,
"git.confirmSync": false,
"git.untrackedChanges": "separate",
"git.promptToSaveFilesBeforeCommit": "staged",
"gitlens.advanced.telemetry.enabled": false,
"gitlens.codeLens.scopes": ["document", "containers"],
"gitlens.mode.statusBar.enabled": false,
"gitlens.recentChanges.highlight.locations": ["line", "gutter", "overview"],
"gitlens.views.compare.enabled": false,
"gitlens.views.fileHistory.location": "scm",
"gitlens.views.lineHistory.enabled": false,
"importCost.bundleSizeDecoration": "both",
"importCost.javascriptExtensions": ["\\.js?$", "\\.jsx?$"],
"importCost.timeout": 60000,
"indentRainbow.errorColor": "rgba(0,0,0,0)",
"instantmarkdown.autoOpenBrowser": false,
"instantmarkdown.autoCloseServerAndBrowser": false,
"java.format.settings.profile": "GoogleStyle",
"java.format.settings.url": "https://raw.githubusercontent.com/google/styleguide/gh-pages/eclipse-java-google-style.xml",
"java.implementationsCodeLens.enabled": true,
"java.errors.incompleteClasspath.severity": "ignore",
"javascript.format.enable": false,
"javascript.implicitProjectConfig.checkJs": true,
"javascript.validate.enable": false,
"liveServer.settings.CustomBrowser": "firefox",
"liveServer.settings.donotShowInfoMsg": true,
"liveServer.settings.donotVerifyTags": true,
"liveServer.settings.host": "localhost",
"liveServer.settings.port": 0,
"markdownlint.config": {
"MD013": false,
"MD025": false,
"MD029": false,
"MD033": false,
"MD040": false,
"MD041": false
},
"material-icon-theme.activeIconPack": "none",
"material-icon-theme.hidesExplorerArrows": true,
"material-icon-theme.opacity": 1,
"php.suggest.basic": false,
"prettier.disableLanguages": ["html", "vue"],
"python.autoComplete.addBrackets": false,
"python.dataScience.askForKernelRestart": false,
"python.dataScience.sendSelectionToInteractiveWindow": false,
"python.formatting.autopep8Args": ["--ignore", "E402"],
"python.formatting.blackArgs": ["--line-length", "100"],
"python.formatting.provider": "yapf",
"python.languageServer": "Microsoft",
"python.linting.pylintArgs": [
"--load-plugins",
"pylint_django",
"pylint_flask",
"--disable",
"C0111"
],
"python.linting.pylintEnabled": true,
"remote.downloadExtensionsLocally": true,
"rest-client.enableTelemetry": false,
"telemetry.enableTelemetry": false,
"telemetry.enableCrashReporter": false,
"terminal.explorerKind": "integrated",
"terminal.integrated.cursorBlinking": true,
"terminal.integrated.cursorStyle": "block",
"terminal.integrated.commandsToSkipShell": [],
"terminal.integrated.fontFamily": "Fira Code Light",
"terminal.integrated.fontSize": 14,
"terminal.integrated.rendererType": "dom",
"terminal.integrated.rightClickBehavior": "copyPaste",
"terminal.integrated.shell.windows": "C:\\Windows\\System32\\cmd.exe",
"terminal.integrated.showExitAlert": false,
"vetur.format.defaultFormatter.css": "prettier",
"vetur.format.defaultFormatter.js": "prettier",
"vetur.validation.template": false,
"vsintellicode.modify.editor.suggestSelection": "automaticallyOverrodeDefaultValue",
"vsintellicode.python.completionsEnabled": true,
"window.titleSeparator": " • ",
"window.zoomLevel": 0,
"workbench.iconTheme": "material-icon-theme",
"workbench.settings.editor": "json",
"workbench.sideBar.location": "right",
"workbench.tree.indent": 10,
"xml.codeLens.enabled": true,
"xml.format.splitAttributes": true,
"[cpp]": {
"editor.tabSize": 3,
"editor.wordBasedSuggestions": true
},
"[dart]": {
"editor.rulers": [80],
"editor.selectionHighlight": false,
"editor.suggest.snippetsPreventQuickSuggestions": false,
"editor.suggestSelection": "first",
"editor.tabCompletion": "onlySnippets",
"editor.wordBasedSuggestions": false
},
"[html]": {
"editor.defaultFormatter": "HookyQR.beautify"
},
"[java]": {
"editor.tabSize": 4
},
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.fontLigatures": "'ss02', 'ss19'"
},
"[markdown]": {
"editor.defaultFormatter": "yzhang.markdown-all-in-one",
"editor.lineHeight": 24,
"editor.lineNumbers": "off",
"editor.minimap.enabled": false,
"editor.tabSize": 4,
"editor.wordWrap": "wordWrapColumn",
"editor.wordWrapColumn": 96,
"editor.quickSuggestions": {
"other": false,
"comments": false,
"strings": false
},
"files.eol": "\n"
},
"[json]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[python]": {
"editor.tabSize": 4
},
"[svelte]": {
"editor.defaultFormatter": "svelte.svelte-vscode"
},
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[yaml]": {
"editor.defaultFormatter": "redhat.vscode-yaml"
}
}
Find an issue with this post? Have something to add, update, or clarify? All my posts here are editable.
Just create a new Issue or PR on GitHub, any fix or addition is much appreciated!