zed-101-setup Documentation

Your ultimate guide to setting up Zed with Vim mode, tailored settings, and key bindings for a seamless coding experience

1,340 stars TypeScript TypeScript 1 file Β· ~2,818 tokens #guide#hacktoberfest#zed
RAW Doc

1. Project Overview & Quickstart (jellydn/zed-101-setup)

File: README.md

Welcome to zed-101-setup πŸ‘‹

Your ultimate guide to setting up Zed Editor with Vim mode, tailored settings, and key bindings for a seamless coding experience

Introduction

The Zed Editor 101 setup guide is designed to help you configure Zed Editor to enhance your development workflow. Whether you’re a Vim enthusiast or looking to boost your productivity with custom settings and key bindings, this guide provides all the necessary steps and resources. Follow along to get your Zed Editor configured with Nerd Font, Vim mode, local AI assistance, and more.

Quick Install

Deploy the entire Zed configuration with a single command:

sh
sh install.sh

This backs up your existing settings.json, keymap.json, and tasks.json to a timestamped directory, then copies the repo versions into ~/.config/zed. To restore, run the cp command printed at the end.

Nerd Font

Install Nerd Font using the following command:

sh
curl -fsSL https://raw.githubusercontent.com/getnf/getnf/main/install.sh | bash
getnf

zed-codemux

This setup uses zed-codemux as the default terminal shell, providing a multiplexer experience within Zed Editor. Install via:

sh
cargo install codemux

Then configure in settings.json:

jsonc
"terminal": {
  "shell": {
    "program": "/path/to/codemux"
  }
}

FFF GUI

This setup integrates fff-gpui, a native-GUI fuzzy file finder and grep tool for Zed. It provides quick file navigation and project-wide search with a minimal TUI interface.

Install via:

sh
brew tap th0jensen/fff-gpui
brew install fff-gpui

Keybindings:

Keybinding Action
space f f Open interactive file picker
space f g Open interactive grep search

Vim mode

For detailed Vim mode setup instructions, refer to the Zed Vim Mode Documentation.

Settings

Update your settings.json file with the following configuration:

text
/* Detailed source-code truncated for AI context efficiency. */

LSP Testing Examples

LSP configuration recipes for rust-analyzer, gopls, vtsls, and biome are in example/lsp-settings.jsonc. Copy the relevant block into the "lsp" section of your settings.json to enable it.

# LSP Server Language Key Settings Demonstrated
1 rust-analyzer Rust checkOnSave, clippy checks, proc macros, inlay hints (binding, chaining, lifetime, type, parameter, reborrow)
2 gopls Go gofumpt, staticcheck, semantic tokens, analyses (nilness, fieldalignment), inlay hints
3 vtsls TypeScript/JavaScript Auto imports, inlay hints (parameter names, types, return types), organize imports, format config
4 biome JS/TS/JSON/CSS Formatter settings (indent, quotes, semicolons), linter, organize imports

Each example showcases different LSP capabilities β€” diagnostics, formatting, code actions, inlay hints, and refactoring β€” useful for testing LSP integrations in Zed.

Example code files for each LSP server are available in the example/ directory to verify the features listed above.

Keymaps

Update your keymap.json file with the following key bindings:

text
/* Detailed source-code truncated for AI context efficiency. */

Tasks

Update your tasks.json file with the following task definitions:

jsonc
// tasks.json, generated at Sat Jun 13 2026 16:13:20 GMT+0800 (Singapore Standard Time)
[
  {
    "label": "fff-gpui: Files",
    "command": "EDITOR=zed fff-gpui --open .",
    "use_new_terminal": false,
    "allow_concurrent_runs": false,
    "reveal": "never",
    "reveal_target": "dock",
    "hide": "always",
    "shell": "system",
    "show_summary": false,
    "show_command": false,
    "save": "none",
  },
  {
    "label": "fff-gpui: Grep",
    "command": "EDITOR=zed fff-gpui --open . --grep",
    "use_new_terminal": false,
    "allow_concurrent_runs": false,
    "reveal": "never",
    "reveal_target": "dock",
    "hide": "always",
    "shell": "system",
    "show_summary": false,
    "show_command": false,
    "save": "none",
  },
]

Task Markers for FFF GUI

The tasks above enable the space f f and space f g keybindings defined in Keymaps. They spawn fff-gpui with the current directory as root.

  • fff-gpui: Files β€” Opens an interactive file picker using fff-gpui
  • fff-gpui: Grep β€” Opens an interactive grep search across project files

Setup local AI with Ollama

This config already includes Ollama support via the language_models.ollama setting pointing at http://localhost:11434. To use local AI:

  1. Install Ollama β€” https://ollama.com
  2. Pull a model β€” e.g., ollama pull llama3.2
  3. Start the server β€” ollama serve (or launch the app)

Zed automatically discovers pulled Ollama models through the api_url setting. No additional config is needed β€” the models appear in the agent model picker alongside cloud providers.

Refer to Zed's Ollama docs for more details.

Recommend extensions

Resources

How to generate the settings

bash
sh cli.sh

Author

πŸ‘€ Huynh Duc Dung

Show your support

If this guide has been helpful, please give it a ⭐️.



Contributors ✨

Thanks goes to these wonderful people (emoji key):

Dung Duc Huynh (Kaka)πŸ’» πŸ“– d1yπŸ“– NaadiyaarπŸ“– Jan LubojackΓ½πŸ“–

This project follows the all-contributors specification. Contributions of any kind welcome!


File: example/README.md

zed-bun-example

To install dependencies:

bash
bun install

To run:

bash
bun run index.ts

This project was created using bun init in bun v1.1.10. Bun is a fast all-in-one JavaScript runtime.

LSP Testing Examples

These files exercise the LSP configurations in settings.json:

File LSP Server Test your setup by opening the file and checking…
rust.rs rust-analyzer Inlay hints, clippy diagnostics, derive expansion
go.go gopls Gofumpt formatting, staticcheck, analyses (nilness, fieldalignment, unusedparams, unusedwrite), inlay hints
ts-lsp.ts vtsls Inlay hints (param, type, return, property), auto imports, organize imports
biome.js biome Formatter (quotes, semicolons, trailing commas), linter (no-unused, use-const), organize imports
biome-config-example.json biome Mirrors the lsp.biome.settings from the parent settings.json β€” validates against Biome 2.4.x
biome.css biome CSS formatter (indentation, nesting, color functions, keyframes)

Copy the relevant LSP block from lsp-settings.jsonc into your settings.json "lsp" section to enable each LSP before testing.

2. Official Technical Reference & Guides (jellydn/docs)

Mintlify Starter Kit

Click on Use this template to copy the Mintlify starter kit. The starter kit contains examples including

  • Guide pages
  • Navigation
  • Customizations
  • API Reference pages
  • Use of popular components

Development

Install the Mintlify CLI to preview the documentation changes locally. To install, use the following command

text
npm i mintlify

Run the following command at the root of your documentation (where mint.json is)

text
mintlify dev

Publishing Changes

Install our Github App to auto propagate changes from your repo to your deployment. Changes will be deployed to production automatically after pushing to the default branch. Find the link to install on your dashboard.

Troubleshooting

  • Mintlify dev isn't running - Run mintlify install it'll re-install dependencies.
  • Page loads as a 404 - Make sure you are running in a folder with mint.json