Skip to content

Editor or IDE configuration #136

@jpmckinney

Description

@jpmckinney

We generally prefer running formatters and linters via pre-commit, etc. for which there is CI tooling, rather than using editor/IDE plugins or features to do formatting and linting. If any integrate with pre-commit, use those.

A first decision is between a source-code editor or an integrated development environment (IDE).

  • An IDE contains a source-code editor, in addition to tighter integration and UI elements for tools related to version control (e.g. bespoke panes for git log and diff), test, build, debug (breakpoints, inspection), diagnostics (squiggly lines), autocomplete, refactor, etc. If using a source-code editor, these other activities are often done in a separate shell.
  • A source-code editor has minimal distractions. There are no popups with definitions, diagnostics, type hints, available methods, autocomplete suggestions, commit history, etc. Some feel that this adds more information for them to process and distracts from their task (e.g. causing them to think about other tasks, like formatting).

Sublime Text

Plugins

Essential

  • Package Control

Syntax

  • ApacheConf
  • Babel (still relevant in June 2025)
  • Django Syntax
  • INI
  • fish
  • Jinja2
  • nginx
  • rainbow_csv (better highlighting than Advanced CSV)
  • Saltstack-related syntax highlighting and snippets
  • Sass
  • TOML
  • Vue

Note: Most of these do not have an LSP available.

Editing

  • Advanced CSV
  • Pretty JSON (faster than JSON Reindent)
  • Neo​Vintageous (unused)
  • Revert All Files

Tools

  • Git
  • Terminus

To change the default shell to fish, Settings… > Package Settings > Terminus > Settings:

{
    "default_config": {
        "osx": "fish"
    },
    "shell_configs": [
        {
            "name": "fish",
            "cmd": ["/opt/homebrew/bin/fish", "-l"],
            "env": {},
            "enable": true,
            "platforms": ["osx"]
        }
    ]
}

AI (unused)

UI

  • Dracula Color Scheme
  • A File Icon (unused, distracting)

IDE-like (unused)

Language-specific:

  • Anaconda
  • Jedi - Python autocompletion
  • Rust Enhanced
  • SQLTools

Tips

  • Sublime Text has an integrated diff feature: https://stackoverflow.com/a/30012550/244258 If you prefer side-by-side diffs or need to diff other sources, try the plugins, Compare Side-By-Side, FileDiffs or DiffTabs.

Zed

Interesting features:

Configuration

~/.config/zed/settings.json

  "buffer_font_size": 12,
  "buffer_font_family": "Menlo",
  "git": {
    "inline_blame": {
      "enabled": false
    }
  }

More ways to disable features at https://gerotakke.de/public/my-zed-settings.json:

	"enable_copilot_integration": false,
	"show_completions_on_input": false,
	"features": {
		"inline_completion_provider": "none",
		"copilot": false
	},
	"hover_popover_enabled": false,
	"use_autoclose": false,
	"format_on_save": "off",
	"remove_trailing_whitespace_on_save": false,

Issues

Testing

  • Check if it reloads unsaved files after close/force quit, like Sublime Text
  • Test its performance with a heavy search/replace request, e.g. { in a large JSON file

Cursor (likely applies to VS Code)

Plugins

Languages

  • Even Better TOML
  • markdownlint
  • Pylance
  • Python
  • Python Debugger
  • Rainbow CSV
  • reStructuredText, which requires:
    • Esbonio
    • reStructuredText Syntax highlighting
  • Ruff
  • rust-analyzer

Editing

Tools

  • GitLens, e.g. for git blame

UI

  • Dracula Theme Official

Configuration

  • To edit keybindings.json go to Cursor > Settings... > Keyboard Shortcuts. Can also click the "Open Keyboard Shortcuts (JSON)" icon) to edit the JSON directly.
  • Settings > Extensions > GitLens > Inline Blame > Uncheck "GitLens > Current Line"

settings.json:

    "editor.inlayHints.enabled": "off",

Preferences: Open Keyboard Shortcuts (JSON)

    {
        "key": "shift+cmd+f",
        "command": "search.action.openEditor"
    }

Tips

  • When opening the symbols listing, type : to immediately filter to only function, methods, classes, etc.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions