{"id":49327421,"url":"https://github.com/anthonyamaro15/nevi","last_synced_at":"2026-04-26T20:35:48.646Z","repository":{"id":334813547,"uuid":"1135340409","full_name":"anthonyamaro15/nevi","owner":"anthonyamaro15","description":"Fast terminal editor inspired by Neovim and Zed, written in Rust","archived":false,"fork":false,"pushed_at":"2026-03-01T03:08:17.000Z","size":764,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-03-01T06:42:11.368Z","etag":null,"topics":["cli","editor","lsp","neovim","rust","terminal","text-editor","tree-sitter","vim"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/anthonyamaro15.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-16T00:54:40.000Z","updated_at":"2026-03-01T03:08:20.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/anthonyamaro15/nevi","commit_stats":null,"previous_names":["anthonyamaro15/nevi"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/anthonyamaro15/nevi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anthonyamaro15%2Fnevi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anthonyamaro15%2Fnevi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anthonyamaro15%2Fnevi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anthonyamaro15%2Fnevi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/anthonyamaro15","download_url":"https://codeload.github.com/anthonyamaro15/nevi/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anthonyamaro15%2Fnevi/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32312496,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T19:15:34.056Z","status":"ssl_error","status_checked_at":"2026-04-26T19:15:15.467Z","response_time":129,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","editor","lsp","neovim","rust","terminal","text-editor","tree-sitter","vim"],"created_at":"2026-04-26T20:35:47.989Z","updated_at":"2026-04-26T20:35:48.639Z","avatar_url":"https://github.com/anthonyamaro15.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Nevi\n\nA fast, Neovim-inspired terminal editor written in Rust.\n\n*Your vim muscle memory, without the configuration overhead.*\n\n## Why Nevi?\n\n**The Problem:**\nI love Neovim and Zed. Zed is an amazing editor - fast, modern, and beautiful. But it doesn't have all the vim keybinds I use daily, which stopped me from fully migrating to it. Neovim is powerful but can become slow with plugins. Helix uses Kakoune-style keybindings which require relearning muscle memory.\n\n**Nevi's Goal:**\nA fast, native terminal editor where your existing vim/neovim muscle memory just works. No relearning keybindings, no plugin configuration overhead, no compromise on modern features like LSP and tree-sitter.\n\n| Editor | Vim Keybinds | Built-in Features | Notes |\n|--------|--------------|-------------------|-------|\n| Neovim | Full | Via plugins | Powerful but plugin-dependent |\n| Zed | Partial | Yes | Fast but vim mode incomplete |\n| Helix | Kakoune-style | Yes | Different keybind philosophy |\n| **Nevi** | In Progress | Yes | Aiming for full vim compatibility |\n\n\u003e **Note:** Nevi is under active development. Most common vim keybindings are implemented, with more being added regularly. See [Keybindings](#keybindings) for current status.\n\n## Features\n\n\u003e **Note:** Currently macOS only. Linux and Windows support planned.\n\n- **Vim/neovim keybindings** - Most common keybinds implemented, more being added regularly\n- **Built-in LSP** - rust-analyzer, typescript-language-server, pyright, and more\n- **Tree-sitter syntax highlighting** - Fast, accurate highlighting for Rust, TypeScript, JavaScript, Python, CSS, JSON, TOML, HTML, Markdown\n- **Theme selection** - Multiple built-in colorschemes with easy switching\n- **Fuzzy file finder** - Telescope-style file and content search\n- **GitHub Copilot integration** - AI-powered completions\n- **File explorer** - Built-in tree view\n- **Git signs** - Gutter indicators for added/modified/deleted lines\n- **Harpoon-style quick file switching** - Pin and jump to frequently used files\n- **External formatter support** - Biome, Prettier, and other formatters\n- **Split windows** - Vertical and horizontal splits\n- **Configurable via TOML** - Simple, readable configuration\n\n## Installation\n\n### From Source\n\n```bash\ngit clone https://github.com/anthonyamaro15/nevi.git\ncd nevi\ncargo build --release\n./target/release/nevi\n```\n\n### Add to PATH (optional)\n\n```bash\ncp target/release/nevi ~/.local/bin/\n# or\nsudo cp target/release/nevi /usr/local/bin/\n```\n\n## Quick Start\n\n```bash\n# Open current directory\nnevi .\n\n# Open a file\nnevi src/main.rs\n\n# Open multiple files\nnevi file1.rs file2.rs\n```\n\n**Basic commands:**\n- `:w` - Save\n- `:q` - Quit\n- `:wq` - Save and quit\n- `\u003cSpace\u003eff` - Find files\n- `\u003cSpace\u003efg` - Live grep\n- `\u003cSpace\u003ee` - File explorer\n\n## Configuration\n\nConfig location: `~/.config/nevi/config.toml`\n\nA template config file is created automatically on first run. Here's an example:\n\n```toml\n[editor]\ntab_width = 2\nformat_on_save = true\nrelative_numbers = true\nscroll_off = 8\n\n[theme]\ncolorscheme = \"onedark\"\n\n[lsp]\nenabled = true\n\n[copilot]\nenabled = true\n```\n\nSee the generated config file at `~/.config/nevi/config.toml` for all available options with documentation.\n\n## Custom Themes\n\nNevi comes with 15+ built-in themes. You can also create your own custom themes.\n\n### Built-in Themes\n\nSelect a theme with `:theme \u003cname\u003e` or `\u003cSpace\u003eft` to open the theme picker.\n\nAvailable themes: `onedark`, `dracula`, `gruvbox`, `nord`, `tokyonight`, `catppuccin-mocha`, `rose-pine`, `solarized-dark`, `kanagawa`, `monokai`, `everforest`, `github-dark`, `ayu-dark`, `palenight`, `nightfox`\n\n### Creating Custom Themes\n\n1. **Location:** Place `.toml` files in `~/.config/nevi/themes/`\n2. **Template:** A commented template is auto-generated at `~/.config/nevi/themes/_template.toml`\n3. **Naming:** The filename becomes the theme name (e.g., `mytheme.toml` → `:theme mytheme`)\n\nCopy the template to get started:\n\n```bash\ncp ~/.config/nevi/themes/_template.toml ~/.config/nevi/themes/mytheme.toml\n```\n\n### Theme Structure\n\n```toml\n# Define reusable colors\n[palette]\nred = \"#e06c75\"\nblue = \"#61afef\"\nbg = \"#282c34\"\n\n# Syntax highlighting (can reference palette or use hex)\n[syntax]\nkeyword = { fg = \"purple\" }\nstring = { fg = \"green\" }\ncomment = { fg = \"gray\", italic = true }\n\n# UI elements\n[ui]\nbackground = \"bg\"\nforeground = \"#abb2bf\"\ncursor_line = \"#2c313c\"\n\n[ui.statusline]\nmode_normal = \"blue\"\nmode_insert = \"green\"\n\n# And more: [ui.completion], [ui.finder], [diagnostic], [git]\n```\n\nSee `~/.config/nevi/themes/_template.toml` for the complete reference with all available options.\n\n## Keybindings\n\nNevi aims for full vim/neovim keybind compatibility. Most common keybindings are already implemented.\n\n\u003e **Full reference:** See [KEYBINDINGS.md](KEYBINDINGS.md) for the complete keybind documentation with examples and tips.\n\n### Movement\n`h/j/k/l`, `w/b/e/W/B/E`, `0/^/$`, `gg/G`, `{/}`, `f/F/t/T`, `;/,`, `%`, `H/M/L`\n\n### Editing\n`d/c/y` + motions, `dd/cc/yy`, `p/P`, `x/X`, `r`, `J`, `.`, `u/Ctrl+r`\n\n### Text Objects\n`iw/aw`, `iW/aW`, `i\"/a\"`, `i'/a'`, `i(/a(`, `i{/a{`, `i[/a[`, `i\u003c/a\u003c`\n\n### Search\n`/`, `?`, `n/N`, `*/#`\n\n### LSP\n`gd` (definition), `gr` (references), `K` (hover), `gl` (diagnostic), `]d/[d` (next/prev diagnostic)\n\n### Surround\n`ds{char}` (delete), `cs{old}{new}` (change), `ys{motion}{char}` (add)\n\n### Comment\n`gcc` (line), `gc{motion}` (motion)\n\n### Leader (`\u003cSpace\u003e`)\n| Key | Action |\n|-----|--------|\n| `ff` | Find files |\n| `fg` | Live grep |\n| `sw` | Search word under cursor |\n| `fb` | Find buffers |\n| `ft` | Theme picker |\n| `e` | File explorer |\n| `ca` | Code actions |\n| `rn` | Rename symbol |\n| `d` | Search diagnostics |\n| `D` | Line diagnostic |\n| `w` | Save file |\n| `q` | Quit |\n| `gg` | Open lazygit |\n| `m` | Add to harpoon |\n| `h` | Harpoon menu |\n| `1-4` | Jump to harpoon slot |\n\n### Window Management\n`Ctrl+w v` (vsplit), `Ctrl+w s` (hsplit), `Ctrl+w c` (close), `Ctrl+w h/j/k/l` (navigate)\n\n### And More\nVisual mode (`v/V/Ctrl+v`), macros (`q{a-z}/@{a-z}`), marks (`m{a-z}/'`), registers (`\"{a-z}/\"+`), replace mode (`R`)\n\n\u003e **Missing a keybind?** Check [KEYBINDINGS.md](KEYBINDINGS.md) for the full list, or [open an issue](https://github.com/anthonyamaro15/nevi/issues) to request one!\n\n## Language Support\n\n### LSP Servers\n\n| Language | Server | Status |\n|----------|--------|--------|\n| Rust | rust-analyzer | Supported |\n| TypeScript/JavaScript | typescript-language-server | Supported |\n| Python | pyright | In Progress |\n| CSS/SCSS | vscode-css-language-server | Supported |\n| JSON | vscode-json-language-server | Supported |\n| TOML | taplo | Supported |\n| HTML | vscode-html-language-server | Supported |\n\nLSP servers are auto-detected when installed. See [`~/.config/nevi/config.toml`](#configuration) for LSP configuration options.\n\n\u003e **Missing a language?** Open a [GitHub issue](https://github.com/anthonyamaro15/nevi/issues) and we'll work on adding support!\n\n### External Formatters\n\nConfigure formatters in `~/.config/nevi/languages.toml`:\n\n```toml\n[typescript]\nformatter = { command = \"biome\", args = [\"format\", \"--stdin-file-path\", \"{file}\"] }\n```\n\n## Contributing\n\nContributions are welcome! Please feel free to submit issues and pull requests.\n\n- [Report a bug](https://github.com/anthonyamaro15/nevi/issues)\n- [Request a feature](https://github.com/anthonyamaro15/nevi/issues)\n\n## License\n\nMIT License\n\n## Acknowledgments\n\nInspired by [Neovim](https://neovim.io/), [Helix](https://helix-editor.com/), and [Zed](https://zed.dev/).\n\nBuilt with:\n- [ropey](https://github.com/cessen/ropey) - Rope data structure for text\n- [tree-sitter](https://tree-sitter.github.io/tree-sitter/) - Syntax highlighting\n- [crossterm](https://github.com/crossterm-rs/crossterm) - Terminal handling\n- [nucleo](https://github.com/helix-editor/nucleo) - Fuzzy matching\n- [git2](https://github.com/rust-lang/git2-rs) - Git integration\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanthonyamaro15%2Fnevi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fanthonyamaro15%2Fnevi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanthonyamaro15%2Fnevi/lists"}