11. Text Editors
Picking an editor is picking where you will spend most of your working day. This note compares the main kinds and what to look for. The terminal editors (Vi, Vim, Neovim, Nano) have their own notes in 01. Linux: Text Editors, Vim, NeoVim, Nano.
The kinds at a glance
| Kind | Examples | Strength | Trade-off |
|---|---|---|---|
| Terminal editors | Nano, Vim, Neovim, Helix | Everywhere (SSH, servers), fast, keyboard-driven | Learning curve; setup for modern features |
| Code editors | VS Code, Sublime Text, Zed, Notepad++ | Fast, extensible, many languages | Debugging and refactoring depend on extensions |
| IDEs | IntelliJ IDEA, PyCharm, Visual Studio, Eclipse, Xcode, Android Studio | Deep language understanding, refactoring, debugging, profiling | Heavier, often language-specific |
| AI-first editors | Cursor, Windsurf, VS Code or JetBrains with AI assistants | Chat, multi-file edits and generation inside the editor | Review everything; cost; privacy of your code |
| Cloud / browser | GitHub Codespaces, Replit, StackBlitz, CodePen | No setup, same environment for everyone | Needs internet; limits on resources |
| Specialised | Arduino IDE, PlatformIO, Godot, Unity, RStudio, Jupyter | Built for one domain | Narrow use |
What really makes an editor good: three ideas
1. Language servers (LSP) A language server is a background program that understands one language (Python, Go, Rust...). Editors talk to it over the Language Server Protocol, so autocomplete, go-to-definition, rename and error squiggles work the same in VS Code, Neovim, Zed, Helix or Emacs. This is why a light editor can now feel like an IDE.
flowchart LR
E[Editor VS Code, Neovim, Zed] <-- LSP --> S[Language server pyright, gopls, rust-analyzer]
E <-- DAP --> D[Debug adapter]
S --> C[(Your code)]
2. Debugging and tests inside the editor The Debug Adapter Protocol (DAP) does the same job for debuggers. Being able to set a breakpoint and run one test from the editor is worth more than any theme.
3. Remote and reproducible environments Edit code on another machine without copying it: VS Code Remote-SSH, Dev Containers, Codespaces, or just Neovim over SSH (SSH setup). Everyone then builds with the same tools.
Terminal editors
| Editor | Notes |
|---|---|
| Nano | Shortcuts shown on screen; the right tool for a quick config edit |
| Vi / Vim | On almost every server; modal editing (normal, insert, visual); fast once learned |
| Neovim | Modern Vim: Lua configuration, built-in LSP, large plugin ecosystem |
| Helix | Modal editor with LSP and Tree-sitter built in, little configuration |
| Micro | Simple, mouse-friendly terminal editor |
Learn at least the basics of Vim (or vi): i insert, Esc normal mode, :w save, :q quit, :wq both, /text search, dd delete a line, u undo.
Code editors
| Editor | Notes |
|---|---|
| VS Code | The most popular; huge extension marketplace, built-in Git, terminal and debugger. VSCodium is the build without Microsoft telemetry |
| Sublime Text | Very fast, great search and multi-cursor |
| Zed | Fast editor written in Rust, built-in collaboration and AI features, open source |
| Notepad++ | Lightweight Windows editor |
| Kate / Gedit / Geany | Straightforward Linux desktop editors |
| ~~Atom~~ | Retired by GitHub in December 2022; do not start with it |
IDEs
| IDE | Best for |
|---|---|
| IntelliJ IDEA | Java and Kotlin (also Spring, Gradle, Maven) |
| PyCharm | Python, Django, data science |
| WebStorm | JavaScript and TypeScript |
| CLion | C and C++ |
| Visual Studio | C#, .NET and C++ on Windows |
| Eclipse | Java and plug-in based development |
| Android Studio | Android apps |
| Xcode | iOS and macOS (Swift) |
JetBrains IDEs share one design, so learning one transfers to the others.
AI-assisted editing: how to use it well
- Treat the assistant as a fast junior colleague: it drafts, you review.
- Give it context: the relevant files, the error message, the goal.
- Ask for small steps and run the tests after each one.
- Read every change before accepting it; check imports and APIs actually exist.
- Never paste secrets into a chat or prompt. Check what your tool sends to its servers, and whether your employer allows it.
- Terminal agents such as Claude Code work alongside any editor: they read and change the project from the command line while you review the diff in your editor.
Features worth checking before you commit to one
| Feature | Why it matters |
|---|---|
| Fuzzy file open and project-wide search | Navigation is most of editing |
| Multi-cursor / multi-file replace | Large mechanical edits |
| Git integration (diff, blame, staging) | Review as you work |
| Integrated terminal | Fewer window switches |
| Formatter and linter on save | Consistent code with no effort |
| Snippets and templates | Skip boilerplate |
| Settings that sync or live in a file | Same setup on every machine |
| Accessibility (screen readers, zoom, themes) | Fits how you work |
Choosing
| Situation | Suggestion |
|---|---|
| First time programming | VS Code (or PyCharm for Python) |
| Quick edits on servers | Nano, then Vim |
| Large Java, Kotlin or C# codebase | A JetBrains IDE or Visual Studio |
| You love the keyboard | Neovim or Helix |
| Speed and simplicity | Sublime Text or Zed |
| Team onboarding with identical setups | Dev Containers or Codespaces |
| Embedded boards | PlatformIO (in VS Code) or the Arduino IDE |
The best editor is the one you know well. Learn its shortcuts, keep its configuration in version control, and do not switch every month.