Contents

Visual Studio Code Logo

Text Editor Opinions?

Yes, I am a bit crazy, have a few screws loose and am wearing flame retardant underpants while writing this post. This post is not intended to start a flame war but I will be playing with fire a bit.

An Alternative

Historically I’ve reached for nano, vim, Notepad2, Sublime Text 3 and other editors for my day to day needs. They work well, are ‘simple’ in nature (yeah, yeah) and don’t carry the full overhead of an IDE. In years past I used Sublime Text 3 the most as a go to editor but over the years I’ve been seeking a better supported alternative (read: external plugin/extension support).

Visual Studio Code - A Winner

Enter Visual Studio Code (link). I’ve been running it since it was first launched and have gone all-in at this point. Microsoft did a great job of creating an Open Source, cross platform editor that doesn’t suck. It’s become my go to editor whenever I have a full GUI at-hand.

Why?!?

Why you ask?

Simply put: it’s open source and sucks less than most.

Real, true, no shit Open Source.

MIT Licensed (link) and code available (link).

But…

Telemetry!

Can be wholly turned off. See this page (link) for details. They make it damn simple to turn off. Even better: when you turn off telemetry it auto prompts you to restart VSCode to ensure it’s actually off.

They didn’t have to do that. They did because us OSS types freak the fuck out when there is some kind of ‘Usage Statistics’ or ‘Telemetry’ present in our tools.

My Keybindings!

Yeah, your keybindings are likely already available and plug and play. There are a ton available. Some common ones:

Nice try!

My [insert favorite thing here]!

Yeah, probably not a good argument. The sheer number of extensions on the marketplace (link) is impressive. You’re likely to find what you crave.

I have the following installed. This is everything I poke at in my hobbies and $dayJob. I really don’t want for anything at this point.

SCM / Version Control!

Yeah, NO PROBLEM. They have a whole page dedicated to SCM and Version Control here (link).

Speed

Uh huh, nothing beats a CLI editor. Stick with your CLI editors if you want raw speed. VSCode is no better, no worse than any other GUI editor I’ve used.

Seriously, try it

In all seriousness, you probably should give VSCode a try. I gave it a week for shits and giggles and… it’s now the editor I use everywhere by default. Unless I’m forced into another editor I’m using VSCode on Windows and Linux. It’s really that good.

My Settings

I did run into a few ‘quirks’ and auto-completion things I didn’t like. Par for the course for the hardcore editor users out there. Thankfully it’s trivial to turn all that excess crap off to match my preferences.

I’ve published my settings below for the curious. I’d link to the gist that ‘Settings sync’ uses but I don’t want to leak anything by accident. You’ll have to deal with the below instead.

keybindings.json

// Place your key bindings in this file to overwrite the defaults
[
    {
        "key": "ctrl+d",
        "command": "editor.action.deleteLines",
        "when": "editorTextFocus && !editorReadonly"
    },
    {
        "key": "ctrl+shift+k",
        "command": "-editor.action.deleteLines",
        "when": "editorTextFocus && !editorReadonly"
    }
]

settings.json

{
    "workbench.iconTheme": "vscode-icons",
    "editor.fontFamily": "'DejaVu Sans Mono', Consolas, monospace",
    "editor.quickSuggestions": false,
    "editor.acceptSuggestionOnEnter": {},
    "editor.wordBasedSuggestions": false,
    "editor.autoClosingBrackets": false,
    "editor.links": false,
    "editor.wordWrapColumn": 120,
    "editor.wrappingIndent": "indent",
    "workbench.editor.closeOnFileDelete": false,
    "window.closeWhenEmpty": true,
    "window.restoreWindows": "all",
    "html.autoClosingTags": false,
    "telemetry.enableCrashReporter": false,
    "telemetry.enableTelemetry": false,
    "markdownlint.config": {
        "MD013": false,
        "MD001": false
      },
    "prettier.tabWidth": 4,
    "java.autobuild.enabled": false,
    "markdown.extension.preview.autoShowPreviewToSide": true,
    "sync.autoDownload": true,
    "sync.autoUpload": true,
    "cSpell.language": "en-US",
  }

extensions.json

[
  {
    "metadata": {
      "id": "e337c67b-55c2-4fef-8949-eb260e7fb7fd",
      "publisherId": "Shan.code-settings-sync",
      "publisherDisplayName": "Shan"
    },
    "name": "code-settings-sync",
    "publisher": "Shan",
    "version": "2.8.7"
  },
  {
    "metadata": {
      "id": "f6dbd813-b0a0-42c1-90ea-10dde9d925a7",
      "publisherId": "streetsidesoftware.code-spell-checker",
      "publisherDisplayName": "streetsidesoftware"
    },
    "name": "code-spell-checker",
    "publisher": "streetsidesoftware",
    "version": "1.6.3"
  },
  {
    "metadata": {
      "id": "690b692e-e8a9-493f-b802-8089d50ac1b2",
      "publisherId": "ms-vscode.cpptools",
      "publisherDisplayName": "ms-vscode"
    },
    "name": "cpptools",
    "publisher": "ms-vscode",
    "version": "0.15.0"
  },
  {
    "metadata": {
      "id": "198a707e-28af-4e84-8610-6e2f628dd12d",
      "publisherId": "redhat.java",
      "publisherDisplayName": "redhat"
    },
    "name": "java",
    "publisher": "redhat",
    "version": "0.19.0"
  },
  {
    "metadata": {
      "id": "61d03280-3919-4dd1-bce1-178ca21fdeaf",
      "publisherId": "James-Yu.latex-workshop",
      "publisherDisplayName": "James-Yu"
    },
    "name": "latex-workshop",
    "publisher": "James-Yu",
    "version": "3.13.0"
  },
  {
    "metadata": {
      "id": "98790d67-10fa-497c-9113-f6c7489207b2",
      "publisherId": "yzhang.markdown-all-in-one",
      "publisherDisplayName": "yzhang"
    },
    "name": "markdown-all-in-one",
    "publisher": "yzhang",
    "version": "1.0.5"
  },
  {
    "metadata": {
      "id": "f015bc3c-a098-4245-8765-615e002e09ab",
      "publisherId": "yzane.markdown-pdf",
      "publisherDisplayName": "yzane"
    },
    "name": "markdown-pdf",
    "publisher": "yzane",
    "version": "0.1.7"
  },
  {
    "metadata": {
      "id": "79afa437-682e-4fa2-a4fd-87844832a1dc",
      "publisherId": "ryu1kn.partial-diff",
      "publisherDisplayName": "ryu1kn"
    },
    "name": "partial-diff",
    "publisher": "ryu1kn",
    "version": "0.5.1"
  },
  {
    "metadata": {
      "id": "40d39ce9-c381-47a0-80c8-a6661f731eab",
      "publisherId": "ms-vscode.PowerShell",
      "publisherDisplayName": "ms-vscode"
    },
    "name": "PowerShell",
    "publisher": "ms-vscode",
    "version": "1.5.1"
  },
  {
    "metadata": {
      "id": "96fa4707-6983-4489-b7c5-d5ffdfdcce90",
      "publisherId": "esbenp.prettier-vscode",
      "publisherDisplayName": "esbenp"
    },
    "name": "prettier-vscode",
    "publisher": "esbenp",
    "version": "1.1.3"
  },
  {
    "metadata": {
      "id": "f1f59ae4-9318-4f3c-a9b5-81b2eaa5f8a5",
      "publisherId": "ms-python.python",
      "publisherDisplayName": "ms-python"
    },
    "name": "python",
    "publisher": "ms-python",
    "version": "2018.1.0"
  },
  {
    "metadata": {
      "id": "893d887a-97ea-40e6-ae20-860eb6ad582e",
      "publisherId": "bbenoist.vagrant",
      "publisherDisplayName": "bbenoist"
    },
    "name": "vagrant",
    "publisher": "bbenoist",
    "version": "0.5.0"
  },
  {
    "metadata": {
      "id": "cf5a111e-3bd1-4e32-9526-20ec73780741",
      "publisherId": "vsciot-vscode.vscode-arduino",
      "publisherDisplayName": "vsciot-vscode"
    },
    "name": "vscode-arduino",
    "publisher": "vsciot-vscode",
    "version": "0.2.10"
  },
  {
    "metadata": {
      "id": "0479fc1c-3d67-49f9-b087-fb9069afe48f",
      "publisherId": "PeterJausovec.vscode-docker",
      "publisherDisplayName": "PeterJausovec"
    },
    "name": "vscode-docker",
    "publisher": "PeterJausovec",
    "version": "0.0.24"
  },
  {
    "metadata": {
      "id": "9ccc1dd7-7ec4-4a46-bd4f-7d7b8b9d322a",
      "publisherId": "robertohuertasm.vscode-icons",
      "publisherDisplayName": "robertohuertasm"
    },
    "name": "vscode-icons",
    "publisher": "robertohuertasm",
    "version": "7.20.0"
  },
  {
    "metadata": {
      "id": "5b45bff0-e35e-4317-8686-1625c2a9c411",
      "publisherId": "adamvoss.vscode-languagetool",
      "publisherDisplayName": "adamvoss"
    },
    "name": "vscode-languagetool",
    "publisher": "adamvoss",
    "version": "3.8.0"
  },
  {
    "metadata": {
      "id": "87f864bd-5dc1-4a95-a20a-2f4f44b4844e",
      "publisherId": "adamvoss.vscode-languagetool-en",
      "publisherDisplayName": "adamvoss"
    },
    "name": "vscode-languagetool-en",
    "publisher": "adamvoss",
    "version": "3.8.0"
  },
  {
    "metadata": {
      "id": "54459c79-71f5-4bb5-ab31-e8513ea47e31",
      "publisherId": "trixnz.vscode-lua",
      "publisherDisplayName": "trixnz"
    },
    "name": "vscode-lua",
    "publisher": "trixnz",
    "version": "0.11.0"
  },
  {
    "metadata": {
      "id": "daf8b44d-8aae-4da2-80c5-1f770219f643",
      "publisherId": "DavidAnson.vscode-markdownlint",
      "publisherDisplayName": "DavidAnson"
    },
    "name": "vscode-markdownlint",
    "publisher": "DavidAnson",
    "version": "0.13.0"
  }
]