jellydn/zed-101-setup for a Vim-oriented Zed configuration
Your ultimate guide to setting up Zed with Vim mode, tailored settings, and key bindings for a seamless coding experience
At a glance
- What is it?
- A configuration guide for Zed Editor users who want Vim mode, custom key bindings, a terminal multiplexer, fuzzy file finding, and several agent integrations. The installer is convenient, but it copies opinionated settings into the main Zed configuration directory and should be reviewed before adoption.
- Who is it for?
- Adopt this project if you already want the specific Zed configuration represented by its settings, keymap, and tasks files. Do not adopt it as a neutral starting point for Vim mode, because it also enables opinionated interfaces, agent servers, and worktree trust.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository received new commits within the last day.
- What is it written in?
- Mainly TypeScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What zed-101-setup changes in Zed
zed-101-setup addresses a configuration problem rather than an application-development problem. It is aimed at developers who use Zed Editor, especially Vim enthusiasts who also want a prepared set of editor settings, terminal behavior, tasks, and key bindings. The repository is a guide and a collection of configuration files rather than a Zed extension. Its top-level files include settings.json, keymap.json, tasks.json, install.sh, a TypeScript CLI, and examples for several languages.
The package covers several layers of the editing environment. Vim mode is part of the proposed workflow, with detailed behavior delegated to Zed's Vim mode documentation. The repository also configures zed-codemux as the terminal shell, fff-gpui for file and grep navigation, Nerd Fonts for glyph rendering, and multiple AI agent integrations. This breadth makes the project more than a short Vim configuration tutorial.
That scope also creates its main adoption trade-off. A user who only needs modal editing may have to separate core Zed settings from optional tools and opinionated choices. The README presents these components as one setup, but it does not provide a documented minimal profile. The configuration is therefore best understood as the author's complete Zed environment rather than a generally neutral baseline.
How the installer and configuration files interact
The documented installation path runs install.sh. According to the README, the script backs up the existing settings.json, keymap.json, and tasks.json in a timestamped directory, then copies the repository versions into ~/.config/zed. It also prints a cp command that can restore the backup. This is a direct file replacement model, not an import prompt or a merge performed by Zed.
The three copied files control different parts of the environment. settings.json contains editor preferences, including font choices, bracket colorization, signature help, private-value redaction, Git inline blame, worktree trust, and agent server declarations. keymap.json supplies custom actions, while tasks.json is also copied, although its contents are not explained. The repository also includes cli.sh and cli.ts, and package.json defines scripts that run the CLI with Bun. The installer documentation does not establish that `sh install.sh` invokes that CLI, so the two installation surfaces should not be conflated.
Some settings carry consequences beyond appearance. The configuration sets `"trust_all_worktrees": true`, enables inline blame, selects Zed as the edit prediction provider, and registers a broad set of agent servers. It also chooses a bar cursor, hides the active file from the status bar, and assigns several font fallbacks. These are concrete workflow decisions, not merely decorative defaults.
Installing zed-101-setup and verifying the first configuration
The README gives a short installation command. Run it only after reviewing the replacement behavior and checking the local versions of `settings.json`, `keymap.json`, and `tasks.json`.
sh install.shOn completion, the reader should see confirmation that the three existing files were backed up into a timestamped directory and that the repository versions were copied to `~/.config/zed`. The installer prints the exact restore command, which should be retained with the backup location. A practical first check is to open the printed timestamped directory and confirm that it contains the expected pre-install files.
The configuration cannot be called complete with the base installer alone. `zed-codemux` and `fff-gpui` require separate installation, while Nerd Font has its own setup path. The repository's `settings.json` also names agent servers that depend on Zed registry entries. The README does not document a verification command for those integrations, so users should verify each configured feature inside Zed rather than assume that installing this repository enables it automatically.
Adding codemux and the fff-gpui commands
The terminal side is configured through zed-codemux. The documented package installation is performed with Cargo:
cargo install codemuxAfter installation, the terminal program path must point to the installed codemux executable. The repository example uses a placeholder because the README does not publish a universal installation location:
"terminal": {
"shell": {
"program": "/path/to/codemux"
}
}The path is not a literal value to paste unchanged. It must be replaced with the location of the `codemux` executable on the reader's machine. The README calls codemux a multiplexer experience inside Zed, but the excerpt does not document fallback behavior when codemux is absent or incompatible with the installed Zed version. That is a real deployment dependency, not an optional visual preference.
FFF navigation is separate and is installed through Homebrew:
brew tap th0jensen/fff-gpui
brew install fff-gpuiOnce configured, `space f f` opens the interactive file picker and `space f g` opens interactive grep search. The README describes fff-gpui as a native GUI fuzzy finder and grep tool with a minimal TUI interface. Its Homebrew installation also makes macOS the clearest documented installation target for this optional component.
Choosing fonts, Vim mode, and external Zed documentation
The recommended font setup uses the `getnf` installer:
curl -fsSL https://raw.githubusercontent.com/getnf/getnf/main/install.sh | bash
getnfThe repository documents these two commands but does not define an automated font installation step. After selecting a font, the provided settings use `Maple Mono NF` for the editor buffer and `Maple UI` for interface elements. They also list `JetBrainsMono Nerd Font Mono`, `Menlo`, `Monaco`, and `Courier New` as fallbacks.
Vim behavior is not fully encoded in the excerpt. The README sends readers to the Zed Vim Mode Documentation and provides a GIF illustrating the configured experience. This distinction matters because modal mappings, language-specific Vim extensions, and other behavior can be governed by upstream Zed configuration rather than only by this repository. The repository can supply the surrounding keymap and settings, but its documentation does not reproduce a complete Vim option reference.
The combination also creates a dependency chain. A missing Nerd Font can leave icons or glyphs unsupported, a codemux path can prevent the configured terminal from launching, and an unavailable fff-gpui installation leaves its documented actions without a backing tool. Reviewing the active Zed settings after installation is more useful than assuming every feature was activated by copying the files.
AI agents, worktree trust, and configuration risk
The provided settings register `pi-acp`, `kilo`, `github-copilot-cli`, `gemini`, `cursor`, `codex-acp`, `claude-acp`, `amp-acp`, `factory-droid`, `github-copilot`, and `opencode`. Most use `"type": "registry"`, while the `opencode` entry adds default model, effort, mode, and favorite model options. These declarations tell Zed which agent servers are represented in the configuration; the README does not claim that each service is installed or authenticated by `sh install.sh`.
That distinction is important for evaluation. Users who want a minimal local setup may not want eleven agent integrations, and users may need separate credentials or local tooling that this repository does not document. The configuration also sets `"trust_all_worktrees": true`, which applies to every worktree opened by Zed under that policy. Reviewers should decide whether that policy matches their project and host environment rather than accepting it as part of a visual preset.
The repository enables `"redact_private_values": true`, hides values in private files such as `.env` and `.pem`, and selects Zed as the edit-prediction provider. These settings show that the setup includes privacy display and AI behavior, but the README does not explain provider availability, network use, authentication, or data handling. The MIT license covers the repository material and does not settle the terms of external agents, fonts, Homebrew packages, or Zed services.
Maintenance, upgrades, and the cost of replacing local files
The repository is not archived, and its last push was on 2026-10-16. It has no GitHub releases, so upgrades are not organized through tagged release artifacts in the repository metadata available here. A user who adopts the setup must compare local configuration changes with newer repository files before copying them again. The install script's backup mechanism reduces the immediate replacement risk, but repeated installations can still create a manual configuration merge task.
The project also includes maintenance tooling in `package.json`. `bun run lint` runs `biome check.`, `biome check --write.` is exposed as `lint:fix`, and `tsc --noEmit` powers `typecheck`. The repository has a `renovate.json`, `.pre-commit-config.yaml`, and a Bun lockfile, indicating maintenance files for the TypeScript side of the repository. The repository documentation does not state that Zed automatically installs these development dependencies, so editing or running the CLI is separate from deploying the Zed configuration.
Upgrades also depend on external components. A newer `settings.json` may assume Zed features or registry entries that are not present in the reader's installed editor. Likewise, replacing `~/.config/zed` can conflict with settings added after the backup. The license is MIT, which permits use and modification under its terms, but users remain responsible for reviewing the exact license text and for the external tools they install.
Editorial conclusion
Adopt this project if you already want the specific Zed configuration represented by its settings, keymap, and tasks files. Do not adopt it as a neutral starting point for Vim mode, because it also enables opinionated interfaces, agent servers, and worktree trust. Review install.sh, settings.json, keymap.json, and tasks.json before running sh install.sh, then confirm that the external tools and registry agents match your environment.
Frequently asked questions
Does zed-101-setup install Zed Editor itself?
The README does not give steps for installing Zed Editor. It provides a configuration installer that runs `sh install.sh` and copies repository files into `~/.config/zed`.
What does zed-101-setup back up before changing my Zed files?
The installer backs up the existing `settings.json`, `keymap.json`, and `tasks.json` to a timestamped directory. It then copies the repository versions into `~/.config/zed` and prints a restore command.
Is Vim mode the only feature configured by zed-101-setup?
No. The setup also includes Zed settings, key bindings, a codemux terminal shell, fff-gpui file and grep actions, Nerd Font guidance, and agent server declarations.
How do I restore my previous Zed configuration after installing zed-101-setup?
The README says to use the `cp` command printed at the end of `sh install.sh`. That command and the timestamped backup directory are the documented restoration route.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/jellydn-zed-101-setup)Was this useful?