My VS Code Setup (and less known extensions)
Tags: vscode, extensions
Published: 2021-04-30 17:06:26

Hey hey 👋

You may look at the title and sarcastically say "Yay, another VS Code extensions list", at least I would. The fact is that I end up opening said articles and realize that most times they share 8 out of 10 extensions between them all. I use most of them, so I'm not going to go into detail about those that are most featured in articles, instead I'll try to analyze the lesser known and most useful extensions I'm using.  I've split the extension list into categories so you can easily find whatever you're looking for here, and at the end of the article you can find the full list of extensions I'm using.

# Our Lord and Savior

Let's start with the editor itself. VS Code is a code editor made by Microsoft. It's mainly powered by the open source [Monaco Editor](https://microsoft.github.io/monaco-editor/), extensions and the extensive settings API. It's also pretty lightweight for all that it offers which is why I changed from Atom and have never stopped preaching about **our lord and savior VS Code.**

By using an extension called [Settings Sync](https://marketplace.visualstudio.com/items?itemName=Shan.code-settings-sync), I've kept about the same configuration throughout the years. Recently Microsoft added a built-in Sync feature which seems to work even better. Sometimes I clean up my extensions, change the color and icon theme and install a few new jewels, hence why I'm currently rocking 59 extensions.

This is my VS Code setup at the moment 👇


![My VS Code Setup](https://cdn.hashnode.com/res/hashnode/image/upload/v1619733662439/aaqg__Dm_.png)

Some main changes from the initial layout include the **sidebar on the right side, the activity bar, theme** and **sidebar items.**

Starting with the theme, I'm currently using these extensions to achieve this look:

## Theming & Layout

Theme: [Electron vue](https://marketplace.visualstudio.com/items?itemName=icao.electron-vue)

Sidebar Icons: [Carbon Product Icons](https://marketplace.visualstudio.com/items?itemName=antfu.icons-carbon)

Opacity (Linux & Windows only): [GlassIt-VSC](https://marketplace.visualstudio.com/items?itemName=s-nlf-fh.glassit)

Folder and File Icons: [Moxer Icons](https://github.com/moxer-theme/moxer-icons-code)

Font: [FiraCode](https://github.com/tonsky/FiraCode) (w/ ligatures)

For the sidebar on the right side and other customizations that are available out of the box, you can add this to your `settings.json` (You can open your settings by pressing Ctrl + P and selecting 'Open Settings (JSON)'.

```jsx
{
	**"workbench.editor.tabCloseButton": "off", // I was accidentally closing tabs too often, so I removed the close button
  "workbench.sideBar.location": "right", // Pretty straightfoward**
  "editor.fontFamily": "'Fira Code', 'Droid Sans Mono', 'monospace', monospace, 'Droid Sans Fallback'", // Fira Code is an open source ligature font that I strongly recommend you install
  "editor.fontLigatures": true, // Enable font ligatures for Fira Code
  "editor.formatOnPaste": true, // Formats your pasted content
  "editor.minimap.enabled": true, // Enables the file minimap
  "editor.minimap.maxColumn": 200,  // Minimap char count
  "editor.minimap.renderCharacters": false, // You can render actual characters instead of the color blocks
  "editor.minimap.showSlider": "always", // Adds a scrollbar to the minimap
	"terminal.integrated.fontFamily": "'MesloLGS NF', 'MesloLGL Nerd Font', monospace", // Change to your terminal font
  "terminal.integrated.shell.linux": "/usr/bin/zsh",  // Change to your default shell and check your OS key (ex: for mac use "shell.mac"),
	"files.eol": "\n",  // Force LF  line endings, useful if you use Windows and Linux/Mac
  "files.watcherExclude": {  // Boosts performance by not watching for changes in these directories
	    "**/.git/objects/**": true,
	    "**/.git/subtree-cache/**": true,
	    "**/node_modules/*/**": true
	  },
	"editor.codeActionsOnSave": {
	    "source.fixAll.eslint": false // Set to true if you're enforcing ESLint. Disable if you're working on old projects that changed their linting config over time.
	  },
  "eslint.validate": [ "javascript", "javascriptreact", "html", "typescriptreact" ], // use ESLint on these files
  "eslint.workingDirectories": [
    "./node_modules/eslint"
  ],
	"[javascript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode" // use the Prettier extension to format javascript code
  },
}
```

## Linting & Code Formatting

I've included there two settings which are for two extensions, [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint) and [Prettier - Code formatter](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode).

The first is, in my opinion, the best linter for Javascript around. Basically it will warn or throw errors if your code breaks common best practices rules. If you have never used it I strongly suggest you start doing so, and every time ESLint complains about something you think it's stupid, go read about it instead of disabling the linter for that line. ESLint has seriously helped me grow as a developer and while it's a well known extension, it's one I can't help mentioning here.

Prettier on the other hand is a code formatter, it 'prettifies' your code. So when pasting something my editor, the code gets instantly formatted by Prettier.

Something that I've seen in some projects is combining both ESLint and Prettier, meaning that if code style is off the linter will warn you and Prettier will also format your code according to the ESLint rules you have in place. 

## Snippets

I honestly think I'm using far too many snippets extensions, despite the fact that I may or may not be using some on these list, who knows. I'm not a 'snippets' person. But from my extensions list, the ones that I use on a daily basis and actually know that they exist are, [ES7 React/Redux/GraphQL/React-Native snippets](https://marketplace.visualstudio.com/items?itemName=dsznajder.es7-react-js-snippets), [Path Intellisense](https://marketplace.visualstudio.com/items?itemName=christian-kohler.path-intellisense) & [JavaScript (ES6) code snippets](https://marketplace.visualstudio.com/items?itemName=xabikos.JavaScriptSnippets). Path Intellisense is great at auto completing your relative path imports, the other two I use mostly for JavaScript/React shortcuts. The big boss of auto complete and intellisense is [Visual Studio IntelliCode](https://marketplace.visualstudio.com/items?itemName=VisualStudioExptTeam.vscodeintellicode), developed by Microsoft itself, it provides an AI-based relevant code completion to your code editor and is a **must have** for all VSCode users.

Other cool 'auto complete' extensions I have include [Turbo Console Log](https://marketplace.visualstudio.com/items?itemName=xabikos.JavaScriptSnippets) which I use with the keyboard shortcut to log my highlighted variables, [Auto Close Tag](https://marketplace.visualstudio.com/items?itemName=formulahendry.auto-close-tag), a well known extension that works flawlessly even with self closing elements and my personal favorite [Auto Import](https://marketplace.visualstudio.com/items?itemName=steoates.autoimport), which automatically finds and parses code actions for imports.

## Productivity & Git

On the bottom bar there you can see how much I've coded for the day, I'm using two extensions for time tracking and I'm going to recommend the one I've been using for the longest time which is [Waka Time](https://marketplace.visualstudio.com/items?itemName=WakaTime.vscode-wakatime). On the sidebar you can also see [Project Manager](https://marketplace.visualstudio.com/items?itemName=alefragnani.project-manager)'s logo which is an extension for quickly switching between projects from your sidebar. 

Also on the sidebar, we have two git extensions, [Git Lens](https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens) is the first and allows you to fully integrate git into your code editor by adding **code** **blame**, **revision navigation** and file,**line and branch** history all from your sidebar. The other one is [Git Graph](https://marketplace.visualstudio.com/items?itemName=mhutchie.git-graph) which adds a neat graphical interface to your Source Control tab and allows you to quickly check your repository status.

The last two items on the sidebar are [Todo Tree](https://marketplace.visualstudio.com/items?itemName=Gruntfuggly.todo-tree), which shows all `// TODO`  comments on the current repository and the bane of our existence, [Jira](https://marketplace.visualstudio.com/items?itemName=Atlassian.atlascode) also has a VSCode extension, which I only recently discovered, and offers a quick glimpse of your assigned tasks out of the box.

## Honorable Mentions

[Hermes Comments](https://marketplace.visualstudio.com/items?itemName=Makogan.hermes-comments) has about 1k installs and is a simple extension that adds comment commands to your VSCode Command Palette (Ctrl + Shift + P). Simply highlight text, hit the command palette and create framed or sub section comment out of the highlighted text.

[Emoji Log](https://marketplace.visualstudio.com/items?itemName=ahmadawais.emoji-log-vscode) is one of the many surfacing extensions that prefix your commits with Emoji. I prefer this one because it actually adds a button to the Source Control tab.

[Power Mode](https://marketplace.visualstudio.com/items?itemName=hoovercj.vscode-power-mode) is another extension I didn't know I **needed** until I had it. This baby adds up your keystrokes into combos and even has the option to add sparks and custom GIFs to your code editor.

People, I was **blind** before I started using [ident-rainbow](https://marketplace.visualstudio.com/items?itemName=oderwat.indent-rainbow), [Guides](https://marketplace.visualstudio.com/items?itemName=spywhere.guides) and [Bracket Pair Colorizer](https://marketplace.visualstudio.com/items?itemName=CoenraadS.bracket-pair-colorizer). These are one of the most known and oldest extensions out there, and they're always present when I'm using VSCode, check them out if you haven't.

## Full List

### Theming & Layout

[Electron vue](https://marketplace.visualstudio.com/items?itemName=icao.electron-vue)

[Carbon Product Icons](https://marketplace.visualstudio.com/items?itemName=antfu.icons-carbon)

[GlassIt-VSC](https://marketplace.visualstudio.com/items?itemName=s-nlf-fh.glassit)

[Moxer Icons](https://github.com/moxer-theme/moxer-icons-code)

### Productivity & Git

[Code Time](https://marketplace.visualstudio.com/items?itemName=softwaredotcom.swdc-vscode)

[Emoji Log](https://marketplace.visualstudio.com/items?itemName=ahmadawais.emoji-log-vscode)

[Git Lens](https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens)

[Git Graph](https://marketplace.visualstudio.com/items?itemName=mhutchie.git-graph)

[Hermes Comments](https://marketplace.visualstudio.com/items?itemName=Makogan.hermes-comments)

[Icomoon Viewer](https://marketplace.visualstudio.com/items?itemName=CKGrafico.icomoon-viewer)

[Jira](https://marketplace.visualstudio.com/items?itemName=Atlassian.atlascode)

[Project Manager](https://marketplace.visualstudio.com/items?itemName=alefragnani.project-manager)

[Todo Tree](https://marketplace.visualstudio.com/items?itemName=Gruntfuggly.todo-tree)

[Waka Time](https://marketplace.visualstudio.com/items?itemName=WakaTime.vscode-wakatime)

### Utils

[Advanced New Files](https://marketplace.visualstudio.com/items?itemName=dkundel.vscode-new-file)

[Auto Close Tag](https://marketplace.visualstudio.com/items?itemName=formulahendry.auto-close-tag)

[Auto Import](https://marketplace.visualstudio.com/items?itemName=steoates.autoimport)

[Back & Forth](https://marketplace.visualstudio.com/items?itemName=nick-rudenko.back-n-forth)

[Better Comments](https://marketplace.visualstudio.com/items?itemName=aaron-bond.better-comments)

[Bracket Pair Colorizer](https://marketplace.visualstudio.com/items?itemName=CoenraadS.bracket-pair-colorizer)

[Color Highlight](https://marketplace.visualstudio.com/items?itemName=naumovs.color-highlight)

[Color Picker](https://marketplace.visualstudio.com/items?itemName=anseki.vscode-color)

[Guides](https://marketplace.visualstudio.com/items?itemName=spywhere.guides)

[HTML Preview](https://marketplace.visualstudio.com/items?itemName=tht13.html-preview-vscode)

[Icon Fonts](https://marketplace.visualstudio.com/items?itemName=idleberg.icon-fonts)

[Import Cost](https://marketplace.visualstudio.com/items?itemName=wix.vscode-import-cost)

[ident-rainbow](https://marketplace.visualstudio.com/items?itemName=oderwat.indent-rainbow)

[Music Time for Spotify](https://marketplace.visualstudio.com/items?itemName=softwaredotcom.music-time)

[Power Mode](https://marketplace.visualstudio.com/items?itemName=hoovercj.vscode-power-mode)

[Remote - WSL](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-wsl)

[Settings Sync](https://marketplace.visualstudio.com/items?itemName=Shan.code-settings-sync)

[Sort JSON objects](https://marketplace.visualstudio.com/items?itemName=richie5um2.vscode-sort-json)

[Template String Converter](https://marketplace.visualstudio.com/items?itemName=meganrogge.template-string-converter)

[Turbo Console Log](https://marketplace.visualstudio.com/items?itemName=xabikos.JavaScriptSnippets)

### Languages & Snippets

[Babel JavaScript](https://marketplace.visualstudio.com/items?itemName=mgmcdermott.vscode-language-babel)

[DotENV](https://marketplace.visualstudio.com/items?itemName=mikestead.dotenv)

[ES7 React/Redux/GraphQL/React-Native snippets](https://marketplace.visualstudio.com/items?itemName=dsznajder.es7-react-js-snippets)

[IntelliSense for CSS class names in HTML](https://marketplace.visualstudio.com/items?itemName=Zignd.html-css-class-completion)

[JavaScript (ES6) code snippets](https://marketplace.visualstudio.com/items?itemName=xabikos.JavaScriptSnippets)

[JavaScript and TypeScript Nightly](https://marketplace.visualstudio.com/items?itemName=ms-vscode.vscode-typescript-next)

[JSRefactor](https://marketplace.visualstudio.com/items?itemName=cmstead.jsrefactor)

[Jupyter](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter)

[Markdown All in One](https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one)

[npm Intellisense](https://marketplace.visualstudio.com/items?itemName=christian-kohler.npm-intellisense)

[Path Intellisense](https://marketplace.visualstudio.com/items?itemName=christian-kohler.path-intellisense)

[Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python)

[React PropTypes Intellisense](https://marketplace.visualstudio.com/items?itemName=OfHumanBondage.react-proptypes-intellisense)

[Ruby](https://marketplace.visualstudio.com/items?itemName=rebornix.Ruby)

[Ruby Solargraph](https://marketplace.visualstudio.com/items?itemName=castwide.solargraph)

[styled-components-snippets](https://marketplace.visualstudio.com/items?itemName=jonkwheeler.styled-components-snippets)

[Typescript React code snippets](https://marketplace.visualstudio.com/items?itemName=infeng.vscode-react-typescript)

[Visual Stadio IntelliCode](https://marketplace.visualstudio.com/items?itemName=VisualStudioExptTeam.vscodeintellicode)

[VSCode React Refactor](https://marketplace.visualstudio.com/items?itemName=planbcoding.vscode-react-refactor)

[VSCode Ruby](https://marketplace.visualstudio.com/items?itemName=wingrunr21.vscode-ruby)

[YAML](https://marketplace.visualstudio.com/items?itemName=redhat.vscode-yaml)

### Linting

[ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint)

[markdownlint](https://marketplace.visualstudio.com/items?itemName=DavidAnson.vscode-markdownlint)

[Prettier - Code formatter](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode)

[scss-lint](https://marketplace.visualstudio.com/items?itemName=adamwalzer.scss-lint)

## Follow Me

Thanks if you ended up reading through the whole list 💪 For more JS/React content you can check out my [website](http://dsmorais.com) and follow me on [Twitter](https://twitter.com/davidsmorais). 

Let me know what extensions you're using that I did not mention in here so I can check them out 👀