Zed: A fast and modern open source editor#

zed is an open-source code and text editor, designed to be fast and easy to use. It is built in Rust and uses a modern and intuitive user interface. It is currently officially supported on Linux and macOS, but work is underway for Windows implementation (although experimental versions exist). I will tell you how to install it and some of its features.

Installing Zed on Linux#

Although you can install it from the repositories of some package managers, as is my case using Manjaro where I can get it through AUR, my recommended method is to use the official installation script.

Regarding updates, if you use the version installed from the official script, it updates automatically.

Si como yo dispones de un GPU híbrida, te recomiendo seguir la entrada Problemas con Wayland y NVIDIA para solucionar los problemas que puedas tener. El uso de la GPU es lo que permite un rápido renderizado de Zed.

If, like me, you have a hybrid GPU, I recommend following the post Issues with Wayland and NVIDIA to solve any problems you may have. GPU usage is what allows Zed’s fast rendering.

Native features of Zed#

Recently, Zed added native Git support, allowing it to match VSCode in one of the features that could be a blocker for many developers. It is not just support for visualizing changes, history, or directing to the web version of the change, but also support for executing git actions with the Zed interface.

I must also highlight as a vital part of Zed, the tree sitter algorithm, which is the parser used in Zed natively with incremental support, allowing better performance after initial load.

The multibuffer is a feature that allows editing multiple files at the same time, allowing greater efficiency in code editing and is supported natively. For this you can do general search with Ctrl+Shift+F and make use of multiple editing with Ctrl+Shift+L (I don’t know if it’s a bug, but it only works for me if I have match case selected) or if we want specific points with Alt+Click (it is not required that the selected point corresponds to the search match).

We also find in Zed native support for LLM models for chat assistance, allowing context files to be passed, and direct editing in file. Through this way it is possible to use different LLM models, including invocations through Ollama and LM Studio (which allows using local models like qwen2.5:7b, qwen2.5-coder:7b or gemma3:4b) or native support for Claude, Copilot and Gemini. You can also use native inline prediction with the Zeta model which is a fine-tune of qwen2.5-coder:7b by Zed.

Finally, I want to highlight its native Notebook support (support limited to some languages, but includes Python) through Jupyter kernels.

Zed Configuration#

To illustrate Zed configuration and its integration with formatting tools and extensions, we are going to install the necessary tools for formatting MarkDown, reST and XML.

uv tool install mdformat \
  --with mdformat-gfm \
  --with mdformat-frontmatter \
  --with mdformat-footnote \
  --with mdformat-gfm-alerts \
  --with mdformat-myst \
  --with mdformat-admon
uv tool install docstrfmt --with sphinx
cargo install xml-pretty

We are also going to install Ollama and we can have a local model like qwen2.5:7b (for the purpose of the configuration file example).

It is important that for the activation of Zed prediction, it is necessary to login to Zed with our GitHub account.

{
  "assistant": {
    "default_model": {
      "provider": "ollama",
      "model": "qwen2.5:7b"
    },
    "version": "2"
  },
  "features": {
    "edit_prediction_provider": "zed"
  },
  "ui_font_size": 16,
  "buffer_font_size": 16,
  "theme": {
    "mode": "system",
    "light": "One Light",
    "dark": "One Dark"
  },
  "languages": {
    "Markdown": {
      "format_on_save": "on",
      "formatter": {
        "external": {
          "command": "mdformat",
          "arguments": ["--number", "--wrap", "80", "--extensions", "myst", "-"]
        }
      }
    },
    "XML": {
      "format_on_save": "on",
      "formatter": {
        "external": {
          "command": "xml-pretty",
          "arguments": ["-i", "2"]
        }
      }
    },
    "reST": {
      "format_on_save": "on",
      "formatter": {
        "external": {
          "command": "docstrfmt",
          "arguments": ["-"]
        }
      }
    },
    "Python": {
      "language_servers": ["pyright", "ruff"],
      "format_on_save": "on",
      "formatter": [
        {
          "code_actions": {
            "source.organizeImports.ruff": true,
            "source.fixAll.ruff": true
          }
        },
        {
          "language_server": {
            "name": "ruff"
          }
        }
      ]
    }
  },
  "lsp": {
    "ltex": {
      "settings": {
        "ltex": {
          "language": "es", // en-us
          "enabled": true,
          "completionEnabled": false
        }
      }
    }
  }
}

For the configuration of the Codebook hunspell corrector, a codebook.toml file is available in the project root directory.

dictionaries = ["es"]
use_global = false

For language or external tools that are structured with their already known configuration files, we find the ruff.toml, pyproject.toml or Cargo.toml file to give an example. I am not going to illustrate these because they are well known if you require these languages or linters.