codingstairs
NotesEDULifeContact
⌕Search⌘K
koen

Navigation

  • Intro
  • Blog
  • Life

Get in touch

Send without signing in. Add your email if you'd like a reply.

  • Leave a message anonymously →
  • ✉ warragon112@gmail.com
  • KakaoTalk Open Chat ↗

© 2026 codingstairs

  • Notes
  • EDU
  • Search
  • Life
  • Contact
  • Legal
  • RSS
  • GitHub
Notes›tools

Editor setup

Published 2026-04-28· Updated 2026-05-18·0 views

Editor setup

The editor is where most of the typing and reading actually happens. This article covers the leading editors, the standard protocols (LSP, DAP), and EditorConfig.

1. Visual Studio Code

Microsoft unveiled it at the Build conference in April 2015 and open-sourced it under MIT later that November (the microsoft/vscode repo). Built on Electron (Chromium + Node.js) in TypeScript. The mostly free marketplace and the LSP / DAP standards Microsoft codified around the same time combined to make it the default starter editor for many.

VS Code comes in two streams — Microsoft's official build (with telemetry and some proprietary extensions) and VSCodium, a community build of the same source with telemetry stripped.

2. LSP — Language Server Protocol

Microsoft first published it in 2016. A JSON-RPC protocol between editors and language tools (autocomplete, navigation, diagnostics). Build a server once, and every LSP-compliant editor can use it. As a result, Neovim, Helix, Zed, Emacs, VS Code, and JetBrains can share the same language servers.

3. DAP — Debug Adapter Protocol

Published by Microsoft in 2018. The same idea as LSP, applied to debuggers and editors.

4. The JetBrains family

IntelliJ IDEA (2001), PyCharm (2010), WebStorm (2010), GoLand (2017), and others. Deeply integrated per-language static analysis, refactoring, and debugger. Paid licensing (some free for personal use). Android Studio is built on the IntelliJ Platform.

5. Cursor · Zed · Neovim

  • Cursor (2023, Anysphere) — A VS Code fork with built-in AI assistance.
  • Zed (2024, Zed Industries) — Rust. A GPU-accelerated editor by core Atom alumni. macOS-first, with Linux and Windows support landing.
  • Neovim (2014) — A Vim fork. Lua config and a built-in LSP client.

6. EditorConfig

The standard at editorconfig.org. Write basic conventions like indentation, line endings, and encoding into a .editorconfig file, and many editors follow them automatically. VS Code uses an extension (EditorConfig.EditorConfig); JetBrains has it built in.

7. Core VS Code extensions

Area Extension
Format Prettier · Biome
Lint ESLint · Ruff · Java by Red Hat
Language Python (ms-python) · Pylance · Rust Analyzer · Go · Java Extension Pack
Git GitLens
Environment EditorConfig · Remote SSH · WSL · Dev Containers
Debug DAP-based debuggers per language

Many extensions auto-install and manage their LSP servers. Installing Pylance brings in Microsoft's Python language server alongside.

8. Workspace settings

Putting settings in .vscode/settings.json separates them from the user's globals. Workspace settings fit team-shared conventions:

// .vscode/settings.json
{
  "editor.formatOnSave": true,
  "editor.codeActionsOnSave": { "source.fixAll.eslint": "explicit" },
  "[python]": {
    "editor.defaultFormatter": "charliermarsh.ruff",
    "editor.formatOnSave": true
  },
  "files.eol": "\n",
  "files.insertFinalNewline": true
}

Listing recommended extensions in .vscode/extensions.json automatically guides new collaborators.

.editorconfig example:

root = true

[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = 2

[*.{md,markdown}]
trim_trailing_whitespace = false

[Makefile]
indent_style = tab

9. Other paths

The right pick depends on context.

  • For large Java / Kotlin projects or frequent deep refactoring, JetBrains' static analysis pays off.
  • For lightweight multi-language work, rich extensions, and remote / container development (Remote SSH, Dev Containers), VS Code fits.
  • For keyboard-centric workflows, terminal-bound work, and SSH server environments, Neovim is fast.
  • For prioritizing AI assistance, VS Code forks like Cursor or Windsurf, or VS Code + Copilot, fit.

10. Install examples

# Windows: winget
winget install -e --id Microsoft.VisualStudioCode
winget install -e --id JetBrains.IntelliJIDEA.Community
# macOS: Homebrew
brew install --cask visual-studio-code
brew install --cask intellij-idea-ce
brew install neovim

Extension installs (VS Code CLI):

code --install-extension EditorConfig.EditorConfig
code --install-extension dbaeumer.vscode-eslint
code --install-extension esbenp.prettier-vscode
code --install-extension charliermarsh.ruff

11. Common pitfalls

User globals vs workspace clashes — two formatters running at once. Set editor.defaultFormatter per language explicitly.

ESLint + Prettier rule conflicts — eslint-config-prettier is the standard remedy that turns conflicting rules off, or pick a single tool like Biome.

Extensions in WSL or Remote SSH — missing the "install on remote" step leaves autocomplete silently broken.

Mixed \r\n and \n — pair .editorconfig's end_of_line = lf with .gitattributes' * text=auto eol=lf to keep things consistent.

JetBrains IDE indexing — searches return empty before indexing finishes. Watch the indexing progress bar.

Closing thoughts

LSP and DAP standardization let editors share language servers. Tool choice is preference, but EditorConfig and .gitattributes consistency is a team asset. With AI assistance (Cursor, Copilot, Claude Code) reshaping in-editor workflows, the editor itself stays safer when it remains simple.

Next

  • linting-formatting
  • python-venv-poetry-history

References include VS Code docs, Language Server Protocol, Debug Adapter Protocol, editorconfig.org, JetBrains, Neovim, Zed, VSCodium, and Awesome LSP Servers.

More in tools

All in this category →
  • Git Submodule · Subtree · LFS — repos inside repos
  • Regular expressions — finding strings by pattern
  • A history of Python dependency tools
  • Linting and formatting
  • Gradle
  • Git workflow