nvim

ecosse3GPL-3.0活跃维护

一套面向前端开发的 Neovim 配置,集成 React 等前端技术栈所需的插件与设置,开箱即用,省去自己拼装编辑器的麻烦。

A non-minimal Neovim config built to work most efficiently with Frontend Development

v5.0.0发布于 2026-03-05 18:54 UTC1,408star117fork同步于 2026-11-10 11:48 UTC

怎么上手

README 里没有找到可直接复制的安装命令

README 里没有找到可直接复制的安装命令,请到 README 或官方文档查看安装方式。

硬件要求按 README 关键词推断
支持 Apple Silicon
下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

这个项目的说明还在生成中,先参考下面「最近发版」和 README。

最近发版

5 个版本v5.0.0
  1. v5.0.0最新正式版2026-03-05 · 2026-03-05 18:54 UTC

    EcoVim v5.0.0

    🎉 Major Release: Neovim 0.11 + Complete Modernization

    I'm excited to announce EcoVim v5.0.0 - a massive update bringing native Neovim 0.11+ support, a brand-new configuration system, and dozens of improvements and bug fixes!


    ⚠️ Breaking Changes

    Important: This release requires Neovim 0.11 or higher.

    Migration Guide

    1. Update Neovim to 0.11+ (brew install neovim or build from source)
    2. Backup your config: mv ~/.config/nvim ~/.config/nvim.backup
    3. Clone fresh: git clone https://github.com/ecosse3/nvim.git ~/.config/nvim
    4. Create your user config:
      cd ~/.config/nvim
      cp lua/config/user.lua.example lua/config/user.lua
      
    5. Migrate your customizations from your backup to user.lua

    Major Changes

    Before (v4.x)After (v5.0)
    Telescope pickerSnacks.nvim picker (telescope fully removed)
    nvim-treeSnacks.nvim explorer
    toggletermSnacks Terminal
    nvim-notifySnacks Notifier
    nvim-cmpblink.cmp
    copilot.luacopilot-lsp (with NES)
    codecompanionopencode + MCPHub
    indent-blanklineSnacks indent

    ✨ What's New

    1. 🎛️ New Configuration System

    The biggest change: Personal configuration now lives in lua/config/user.lua (gitignored!)

    -- lua/config/user.lua
    -- Your personal settings - never causes merge conflicts!
    
    EcoVim.colorscheme = "tokyonight-storm"
    EcoVim.lsp.ensure_installed = { "rust_analyzer" }
    

    Features:

    • ✅ EcoVim.lsp - Add custom LSP servers
    • ✅ EcoVim.formatters - Override formatters per filetype
    • ✅ EcoVim.linters - Override linters per filetype
    • ✅ EcoVim.autocmds - Add custom autocmds
    • ✅ EcoVim.plugin_overrides - Modify ANY plugin config

    2. 🤖 Enhanced AI Integration

    • Avante.nvim - Claude-powered coding agent with tool use
    • GitHub Copilot NES - Next Edit Suggestions (press <Tab> to accept)
    • Opencode.nvim - OpenAI integration
    • MCPHub - Model Context Protocol for AI tool integration

    3. 🎨 Modern UI with Snacks.nvim

    All UI components now use folke/snacks.nvim:

    • Picker - Fast fuzzy finder with git integration
    • Explorer - File tree with git status
    • Terminal - Built-in terminal
    • Notifications - Beautiful notifications
    • Bigfile - Handles large files gracefully
    • Indent - Animated indent guides

    4. 🔧 DevOps Support

    New language servers for infrastructure:

    • Docker LSP
    • Terraform + HCL
    • YAML

    5. 💻 Frontend Improvements

    • blink.cmp - Lightning-fast completion with npm + emoji support
    • TypeScript Server Toggle - Switch between tsgo (fast, native Go-based) and ts_ls (classic) via EcoVim.lsp.typescript_server
    • Tailwind - Color highlighting via nvim-highlight-colors
    • multicursor.nvim - Better multi-cursor editing

    6. 🍎 macOS Optimized

    New Command (⌘) keybindings:

    • <D-s> - Save
    • <D-q> / <D-w> - Close buffer
    • <D-d> / <D-u> - Page scroll
    • <D-i> - Jump forward

    7. ⌨️ Keybinding Improvements

    Comprehensive keybindings documentation: The README now includes a complete, audited reference of every keybinding in EcoVim — 12 new sections covering AI & Agents, DAP Debugging, Testing, Search & Replace, Formatting & Linting, TypeScript-specific, Harpoon, Multi-cursor, Window & Split Management, Zen Mode, NPM Package Management, and Treesitter textobjects.

    Added which-key descriptions for:

    • <leader>h / <leader>H - Harpoon menu / add file
    • <leader>[ / <leader>] - Harpoon prev / next
    • <leader>f / <leader>l - Format file / lint file
    • <leader>y - Yazi file manager
    • <leader>D - Database (sqlit)
    • <leader>x - Delete cursor (multicursor)
    • <leader>A - Align cursors (multicursor)
    • <leader>gv - Restore cursors
    • <leader>m - Ad
  2. v4.2.02025-02-04 · 2025-02-04 19:09 UTC
    查看更新说明

    What's Changed

    This is quite important release, because it drops telescope.nvim and nvim-tree.lua support and many more. It's replaced by new great Snacks plugins collection from folke!

    Great video describing telescope replacement:

    https://www.youtube.com/watch?v=7hEWG3GP6m0

    Features

    • cmp: change blink copilot provider & enable ghost text (3dc8c98)
    • keymappings: adjust font size keymap (dc7a3b0)
    • options: update vert fill char (82f071f)
    • picker: replace telescope.nvim with Snacks Picker (74c9866)
    • plugins: add treesitter context indent plugin (c23fd2b)
    • plugins: enable Snacks Bigfile (46a07f6)
    • plugins: enable Snacks Statuscolumn (a2c293a)
    • plugins: replace dressing.nvim with Snacks Input (0a4c46e)
    • plugins: replace mini.bufremove with Snacks BufDelete (052b468)
    • plugins: replace notify plugin with Snacks Notifier (dffe40a)
    • plugins: replace Nvim Tree with Snacks Explorer & adjust color scheme (686b596)

    Bug Fixes

    • formatting: typo in prettierd formatter (35d89b7), closes #186

    [!NOTE] Telescope is not fully dropped, because some of the plugins still use it as a picker. Keymaps are removed and remapped to Snacks Picker.

    Full Changelog: https://github.com/ecosse3/nvim/compare/v4.1.1...v4.2.0

  3. v4.1.12025-01-15 · 2025-01-15 11:22 UTC
    查看更新说明

    Bug Fixes

    • lsp: properly initialize typescript-tools (ec14639)

    Full Changelog: https://github.com/ecosse3/nvim/compare/v4.1.0...v4.1.1

  4. v4.1.02025-01-15 · 2025-01-15 09:39 UTC
    查看更新说明

    Features

    [!IMPORTANT] Big features:

    • plugins: replace nvim-cmp with blink.cmp (01edcd0)
    • plugins: add codecompanion.lua AI plugin (47e7efe)
    • lsp: migrate to typescript-tools from native LSP ts_ls (eb55f0e)

    Rest of features:

    • add new icons for breakpoints and stopped states (a94aa97)
    • colorscheme: add custom styling for the Pmenu component (e0cd9c5)
    • debugging: add Next.js debug configuration for server-side debugging & monorepo support (885db0f)
    • enhance markdown file type support in render markdown plugin (e0a3598)
    • git: change backgrounds of incoming Git Conflict styles (c818a35)
    • lsp: enable inlay hints for Lua (035e9a4)
    • lsp: speed up (36dfeab)
    • plugins: add Avante AI plugin (disabled by default) (5cef9f0)
    • plugins: add harpoon plugin (65b788d)
    • plugins: add nvim-sops plugin (4c08c2e)
    • plugins: add xml formatting support (c075617)
    • plugins: enable codecompanion by default and add it to EcoVim configuration switches (a7b7080)
    • plugins: enable lazy loading for neotest plugin (017131c)
    • plugins: implement sorting options for telescope buffer search & add buffer deletion shortcut (b17b682)
    • plugins: introduce snacks plugin with lazygit integration (4670872)
    • plugins: lazy load neotest only for specific test filetypes (82b5c27)
    • plugins: remove old zen mode plugin and use Zen snacks with zoom support (7a1b289)
    • plugins: rename bqf-init.lua to bqf.lua for clarity & add fzf-lua as dependency (e292399)
    • plugins: update layout configuration in telescope to vertical for better preview handling (2831c5e)

    Bug Fixes

    • dap: fix javascript/typescript debugging without dap-vscode-js (5c1e7e5)
    • plugins: configuration of multicursors (c624197)
    • plugins: working autopairs with blink.cmp (e2db8ae)
    • plugins: working blink autocompletio
  5. v4.0.02024-09-07 · 2024-09-07 08:21 UTC
    查看更新说明

    What's Changed

    ⚠ BREAKING CHANGES

    [!IMPORTANT] This version contains breaking changes in the way how files are structured and how plugins are loaded. The lua/config/plugins.lua file with all plugins is deprecated and each plugin is managed separately via file inside plugins directory.

    • lsp: integrate vtsls for TypeScript language support
    • plugins: new external blame setup
    • plugins: add new ultimate-autopairs configuration
    • plugins: setup for package-info.nvim
    • plugins: printer setup
    • plugins: refactoring plugin configuration
    • plugins: scissors plugin configuration
    • plugins: session manager configuration and key mappings
    • plugins: setup for Alpha.nvim dashboard plugin
    • plugins: spectre plugin with refactor key mappings
    • plugins: spider.lua plugin configuration
    • plugins: add stay-in-place plugin configuration
    • plugins: remove custom telescope pickers and git functions
    • plugins: new configuration for todo-comments plugin
    • plugins: new NvimTree key bindings and configuration
    • plugins: add treesj plugin configuration
    • plugins: update trouble plugin configuration
    • plugins: Zen Mode setup with custom configurations
    • plugins: deprecate plugins.lua file and manage plugins by separate file inside plugins directory

    Features

    • add buffer search picker to Telescope plugin (a99b13d)
    • add initial implementation of codesnap.nvim plugin (d8ad99e)
    • autocmds: attach jest commands to *spec.ts/tsx files (89709b6)
    • include markdown as a recognized file type for rendering (c3cfd04)
    • lsp: integrate vtsls for TypeScript language support (e48d4da)
    • neovide: add Neovide specific configurations and keymaps (fa69013)
    • neovide: adjust transparency settings for Neovide compatibility (f683a3a)
    • plugins: add fidget.nvim plugin for enhanced UI feedback (b44584c)
    • plugins: add markdown-preview plugin configuration (c57a840)
    • plugins: add marks.nvim plugin with BufEnter event trigger (5883e87)
    • plugins: add new smart-splits plugin configuration (9835bbf)
    • plugins: add new tabout.lua plugin (bc26910)
    • plugins: add new ultimate-autopairs configuration (619c25d)
    • plugins: add nvim-bqf (7f1e1d3)
    • plugins: add text-case plugin for text manipulation (1be6651)
    • plugins: add treesitter configuration for auto closing tags (0a69a4f)
    • plugins: add ufo utils handler and update config handler (6a3bc6e)
    • plugins: add vim-table-mode plugin for markdown fil

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    Ecovim: Frontend Neovim Config

    Last commit Stars License Neovim Version

    A non-minimal Neovim config built to work most efficiently with Frontend Development.

    ✨ Features

    🤖 AI & Assistance

    🎨 UI & Experience

    💻 Frontend Development

    • TypeScript, React, Next.js, Vue
    • TailwindCSS with color highlighting
    • blink.cmp - completion engine
    • boundary.nvim - RSC 'use client' markers
    • NPM package info in package.json
    • Jest testing & coverage
    • treesj - smart split/join lines

    🔧 DevOps & Tools

    • Docker LSP support
    • Terraform & HCL
    • YAML language server
    • yazi.nvim - terminal file manager
    • harpoon - quick file navigation
    • multicursor - multi-cursor editing
    • Monorepo-aware root detection (pnpm, Turborepo, Nx, Lerna, Rush)

    🔍 Code Quality

    🌳 Git Integration

    📘 TypeScript & React Features

    EcoVim ships with deep TypeScript and React/Next.js integration out of the box:

    FeaturePluginDescription
    Type checkingtsc.nvimAsync project-wide tsc --noEmit with quickfix
    Error translationts-error-translatorHuman-readable TypeScript errors
    RSC boundariesboundary.nvimVisualize 'use client' directive usage in Next.js
    Template stringstemplate-stringAuto-convert to template literals on ${}
    Tailwind valuestw-valuesPreview resolved Tailwind class values
    Tailwind foldtailwind-foldFold long Tailwind class strings
    Smart incrementdial.nvimCycle true/false, const/let, increment dates
    Reference countssymbol-usageShow usage counts above functions/components
    Live renameinc-renamePreview LSP rename as you type
    JSON/YAML schemasSchemaStoreAuto-schemas for tsconfig, package.json, etc.
    Lua API completionslazydevNeovim Lua API types for vim.*, plugins

    🚀 Performance

    • Startup time: ~90ms (measured on M1 Mac)
    • Lazy loaded: All plugins via lazy.nvim

    Screenshots

    Dashboard

    Dashboard

    Overview

    Neovim

    Some of screenshots can be old

    TailwindCSS with nvim-cmp

    TailwindCSS

    Which Key Menu

    WhichKey

    Lazygit

    Lazygit

    Git Side Blame

    Side Blame


    ☕ Support

    If you enjoy using EcoVim and would like to support its development:

    GitHub Sponsors

    Your support helps maintain and improve EcoVim. Thank you! 🙏

    Installation

    Just clone GitHub repo into ~/.config/nvim.

    Prerequisities

    • Make sure you have installed the latest version of Neovim v0.11+ (nightly is preferred).
    • Have wget, curl, unzip, git, make, pip, python, npm, node, luarocks, fd, ripgrep and cargo installed on your system. You can check if you are missing anything with :checkhealth command.
    • Have any nerd font installed. Fira Code has been used in screenshots. You can download it from nerdfonts.com.

    After install configuration:

    1. Selected treesitter Languages are installed by default. To check it run :TSInstallInfo. Make sure to run :TSInstall <lang> for specific language you want to install.
    2. LSP servers are enabled by default. You can check installed LSP servers by :Mason command.

    Configuration

    All customization is done in lua/config/user.lua. This file is gitignored and won't cause merge conflicts when updating!

    Quick Start

    # Copy the example file
    cp lua/config/user.lua.example lua/config/user.lua
    
    # Edit your personal config
    nvim lua/config/user.lua
    

    Quick Customization Examples

    -- lua/config/user.lua
    
    -- Change colorscheme
    EcoVim.colorscheme = "tokyonight-storm"
    
    -- Add custom LSP servers
    EcoVim.lsp.ensure_installed = { "rust_analyzer", "gopls" }
    
    -- Override formatters
    EcoVim.formatters = {
      javascript = { "prettierd" },
      typescript = { "prettierd" },
    }
    
    -- Add custom autocmds
    EcoVim.autocmds.auto_save = {
      event = "FocusLost",
      pattern = "*",
      command = "silent! wa",
    }
    
    -- Override any plugin config (use repo name, e.g., "snacks.nvim")
    EcoVim.plugin_overrides["snacks.nvim"] = function(_, opts)
      opts.picker.layout = "vertical"
    end
    
    -- Configure project directories (for <leader>pl project picker)
    EcoVim.plugins.projects.dev = { "~/Projects", "~/Work" }
    
    -- Rooter supports monorepo tools out of the box:
    -- pnpm, Turborepo, Nx, Lerna, Rush
    -- Add package.json back to rooter if you don't use monorepos
    -- EcoVim.plugins.rooter.patterns = { ".git", "package.json" }
    
    -- Toggle features on/off
    EcoVim.lsp.format_on_save = true        -- Enable auto-format on save
    EcoVim.lsp.inlay_hints = false           -- Disable inlay hints
    EcoVim.lsp.typescript_server = "ts_ls"   -- Switch from tsgo to ts_ls
    EcoVim.plugins.completion.ghost_text = false  -- Disable ghost text
    EcoVim.plugins.git.blame_line = false    -- Disable inline git blame
    
    -- Custom vim options
    vim.opt.tabstop = 4
    vim.opt.shiftwidth = 4
    

    Full Configuration Options

    OptionTypeDefaultDescription
    colorschemestring"tokyonight-night"Theme name
    ui.fonttableGUI font settings
    ui.float.borderstring"rounded"Border style: "rounded", "single", "double", "shadow", "none"
    lsp.ensure_installedtable{}Additional LSP servers to install via Mason
    lsp.excludetable{ "copilot" }LSP servers to not auto-enable
    lsp.typescript_serverstring"tsgo"TypeScript server: "tsgo" (fast, native) or "ts_ls" (classic)
    lsp.serverstable{}Custom LSP server configurations
    lsp.format_on_savebooleanfalseAuto-format on save (toggle at runtime with :LspToggleAutoFormat)
    lsp.inlay_hintsbooleantrueShow inlay hints from LSP servers
    formatterstable{}Override formatters per filetype
    linterstable{}Override linters per filetype
    autocmdstableAdd custom autocmds
    plugin_overridestableOverride any plugin configuration
    plugins.ai.*.enabledbooleanvariesEnable/disable AI plugins (avante, copilot, opencode)
    plugins.completion.select_first_on_enterbooleanfalseAuto-select first completion item on Enter
    plugins.completion.ghost_textbooleantrueShow inline completion preview (ghost text)
    plugins.git.blame_linebooleantrueShow inline git blame on current line
    plugins.rooter.patternstableRoot detection patterns for vim-rooter
    plugins.projects.devtable{ "~/Projects" }Directories to scan for projects
    plugins.projects.patternstable{ ".git" }Patterns to detect project roots

    Tips

    • Runtime toggles -- Some options also have runtime commands: :LspToggleAutoFormat for format-on-save, :Gitsigns toggle_current_line_blame for git blame.
    • Plugin overrides let you change ANY plugin's config without forking files. Use the plugin's GitHub repo name (e.g., "snacks.nvim", "blink.cmp"). Function overrides receive (plugin, opts) -- mutate opts directly, no need to return.
    • Monorepo users -- EcoVim detects pnpm/Turborepo/Nx/Lerna/Rush roots automatically. The package.json is excluded from rooter patterns to prevent cwd from scoping to sub-packages.
    • Non-monorepo users -- Add package.json back: EcoVim.plugins.rooter.patterns = { ".git", "package.json" }
    • Border style -- EcoVim.ui.float.border controls ALL floating windows (hover, diagnostics, completion, signature help). Set it once and everything follows.
    • See user.lua.example for the complete reference with all available options and inline documentation.

    Updating EcoVim

    Since your config is in user.lua (gitignored), you can safely update:

    cd ~/.config/nvim
    git pull
    

    No merge conflicts with your personal settings!

    For vim settings and new plugins

    • Edit config/options.lua for vim options
    • Create files in lua/plugins/ for new plugins

    Keybindings

    Space (SPC) is my Leader key.

    Tip: Press SPC in normal mode to open the which-key menu and explore all available keybindings interactively.

    File Explorer (Snacks)

    Key BindingsDescription
    <C-e>Toggle Snacks file explorer
    <D-e>Toggle Snacks file explorer (macOS Cmd+E)

    The Snacks explorer uses its own keybindings when focused. Press ? inside the explorer to see all available actions (create, rename, copy, delete, etc.).

    Searching

    Key BindingsDescription
    <C-p>Smart file finder (Snacks picker)
    <S-p>Live grep (Snacks picker)
    sFlash jump to any word
    SFlash treesitter selection
    SPC s fFind files
    SPC s bFind buffers
    SPC s gGit grep
    SPC s oGrep open buffers
    SPC s hRecent files
    SPC s HCommand history
    SPC s sSearch history
    SPC s qQuickfix list
    SPC s cColor schemes
    SPC s dSearch dotfiles (nvim config)
    SPC s tSearch TODOs
    SPC s TSearch TODO/FIX/FIXME
    ]tNext TODO comment
    [tPrevious TODO comment

    Working with LSP

    Key BindingsDescription
    gdGo to definition
    grGo to references
    gyGo to type definition
    giGo to implementation
    KHover documentation / peek fold
    LSignature help (normal & insert mode)
    glLine diagnostics
    ]gNext diagnostic
    [gPrevious diagnostic
    <C-Space> / SPC c aCode action
    SPC c fFormat document (LSP)
    SPC c rRename symbol (live preview)
    SPC c RRename file
    SPC c dDiagnostics list (Snacks picker)
    SPC c tToggle format on save
    SPC c uToggle symbol usage
    SPC c mMason LSP manager
    SPC c l iLSP Info
    SPC c l rLSP Restart
    SPC c l sLSP Stop
    SPC c l SLSP Start
    SPC s sDocument symbols
    SPC s SWorkspace symbols

    TypeScript / React (buffer-local)

    These keybindings are available in TypeScript/JavaScript buffers:

    Key BindingsDescription
    SPC c eWorkspace errors (TSC)
    SPC c iAdd missing imports
    SPC c oOrganize imports
    SPC c sSort imports
    SPC c uRemove unused imports
    SPC c vShow Tailwind CSS values
    <C-a>Smart increment (numbers, booleans, dates, const/let, &&/||, etc.)
    <C-x>Smart decrement

    Formatting & Linting

    Key BindingsDescription
    SPC fFormat file (conform.nvim)
    SPC f (visual)Format selection
    SPC lLint file (nvim-lint)

    Working with Git

    Key BindingsDescription
    SPC g gLazygit
    SPC g sGit status (Snacks picker)
    SPC g fGit files (Snacks picker)
    SPC g aGit add current file
    SPC g AGit add all
    SPC g bBlame panel (git-blame)
    SPC g mBlame line (full commit)
    SPC g dDiff file history (diffview)
    SPC g DDiff view open
    SPC g SDiff view status
    SPC g iGitHub issues list (Octo)
    SPC g pGitHub pull requests list (Octo)
    SPC g LCopy git URL for selection (gitlinker)
    ]cNext change hunk
    [cPrevious change hunk
    Hunk actions
    SPC g h sStage hunk
    SPC g h rReset hunk
    SPC g h SStage buffer
    SPC g h RReset buffer
    SPC g h uUndo stage hunk
    SPC g h pPreview hunk
    SPC g h dDiff hunk
    SPC g h tToggle deleted
    Git log
    SPC g l aLazygit log (cwd)
    SPC g l cLazygit current file history
    SPC g l AGit log (Snacks picker)
    SPC g l CFile commits (Snacks picker)

    Working with Project

    Key BindingsDescription
    SPC p wGrep word under cursor in project (Snacks picker)
    SPC p lSwitch between projects (Snacks picker)
    Search & Replace (grug-far)
    SPC p r rOpen search & replace
    SPC p r aSearch & replace (ast-grep engine)
    SPC p r wSearch & replace word under cursor
    SPC p r WSearch & replace word under cursor in current file
    SPC p r fSearch & replace in current file
    Sessions
    SPC p s sSave current session
    SPC p s lLoad session
    SPC p s LLoad last session
    SPC p s mSession manager commands

    AI & Agents

    Key BindingsDescription
    Copilot NES
    <Tab>Accept/navigate Copilot NES suggestion
    Avante (when enabled)
    SPC a aToggle Avante sidebar
    Uses Avante default keybindings — see :h avante for full list
    Opencode (when enabled)
    SPC oOpencode group (see which-key)
    MCPHub
    :MCPHubOpen MCP Hub

    Debugging (DAP)

    Key BindingsDescription
    SPC d aContinue
    SPC d dContinue
    SPC d bToggle breakpoint
    SPC d BConditional breakpoint
    SPC d iStep into
    SPC d oStep out
    SPC d OStep over
    SPC d hEvaluate expression
    SPC d tTerminate
    SPC d uOpen DAP UI
    SPC d cClose DAP UI
    SPC d wFloat watches
    SPC d sFloat scopes
    SPC d rFloat REPL

    Pre-configured for Chrome, Node.js (pwa-node), Next.js server-side, Jest, Vitest, and Deno.

    Testing (Jest / Neotest)

    Available in TypeScript/JavaScript buffers:

    Key BindingsDescription
    SPC j jRun nearest test
    SPC j fRun current file
    SPC j lRun last test
    SPC j oOpen test output
    SPC j iToggle info panel
    SPC j sStop

    Harpoon

    Key BindingsDescription
    SPC HAdd file to Harpoon
    SPC hOpen Harpoon menu
    SPC 1-4Jump to Harpoon file 1-4
    SPC [Previous Harpoon file
    SPC ]Next Harpoon file

    Multi-cursor

    Using jake-stewart/multicursor.nvim:

    Key BindingsDescription
    <Up>Add cursor above
    <Down>Add cursor below
    SPC mAdd cursor at next match of word
    <Left>Rotate to next cursor
    <Right>Rotate to previous cursor
    SPC xDelete cursor
    <C-LeftMouse>Add/remove cursor with mouse
    <C-q>Toggle cursor
    <Esc>Clear cursors (or enable if disabled)
    SPC g vRestore cursors
    SPC AAlign cursor columns

    Window & Split Management

    Key BindingsDescription
    SPC vSplit right
    SPC VSplit below
    <C-h/j/k/l>Move between splits
    <A-h/j/k/l>Resize splits
    SPC SPC h/j/k/lSwap buffer between splits
    SPC =Resize +5
    SPC -Resize -5
    <C-\>Previous split

    Commenting

    Key BindingsDescription
    gccToggle line comment
    gbcToggle block comment
    gc (visual)Toggle comment
    gcOAdd comment line before
    gcoAdd comment line after
    SPC a cComment box

    Table Mode / Alignment

    Key BindingsDescription
    ga (visual)Aligns selection based on separator (comma, semi-colon, colon etc.) via mini.align
    SPC t mToggle Table Mode (activates in markdown files via vim-table-mode)
    SPC t i C(Table Mode) Insert column before
    SPC t i c(Table Mode) Insert column after
    SPC t d c(Table Mode) Delete column
    SPC t d r(Table Mode) Delete row
    SPC t s(Table Mode) Sort table alphabetically

    NPM Package Management

    Available in package.json buffers:

    Key BindingsDescription
    SPC n sShow package versions
    SPC n hHide package versions
    SPC n uUpdate package
    SPC n iInstall new package
    SPC n dDelete package
    SPC n rReinstall dependencies
    SPC n cChange version

    Zen Mode

    Key BindingsDescription
    SPC zZen mode
    SPC ZZoom mode

    Other Useful Bindings

    Key BindingsDescription
    <S-q>Smartly close current buffer without breaking UI
    <D-s>Save file (macOS Cmd+S)
    <D-q> / <D-w>Close buffer (macOS Cmd+Q/W)
    <D-d> / <D-u>Half-page scroll down/up (macOS Cmd+D/U)
    <D-i>Jump forward in jumplist (macOS Cmd+I)
    <C-o>Jump to previous position in jumplist
    <Tab> / <S-Tab>Cycle through buffers
    <BS>Jump to first non-blank character
    HJump to first non-blank character
    v <CR>Smartly select next treesitter subject (repeat to expand)
    ciqChange inside ANY quotes (`` or '' or "" etc.) via mini.ai
    cibChange inside ANY brackets ({} or [] or () etc.) via mini.ai
    zaToggle fold
    zMClose all folds
    zROpen all folds
    zrOpen all folds except imports/comments
    gJSmart join lines (treesitter-based via treesj)
    ~Swap function arguments (treesitter)
    gPPrint debug variable under cursor (printer.nvim)
    <F12>Toggle terminal
    SPC qToggle quickfix list
    SPC , / SPC .Previous / next quickfix item
    SPC yOpen Yazi file manager
    SPC DOpen database (sqlit)
    Snippets
    SPC a s aAdd new snippet
    SPC a s eEdit snippet
    EcoVim
    SPC / /Open dashboard
    SPC / cOpen config
    SPC / iManage plugins (Lazy)
    SPC / uUpdate plugins
    SPC a nToggle line numbers
    SPC a rToggle relative numbers
    Treesitter textobjects
    ]] / [[Next / previous JSX element
    ]f / [fNext / previous function start
    ]m / [mNext / previous class start
    af / ifSelect around / inside function
    ac / icSelect around / inside class

    Check out the which-key menu and keymappings.lua for most used maps.

    Performance

    Measured on M1.

    Ecovim started in 91.13ms

    DescriptionProgress
    lazy.nvim instead of packer100%
    Better support for null-ls and local formatting100%
    Better support to project word refactor100%
    Support for nvim-dap debugger for React100%
    Support ESLint & Prettier in Native LSP100%
    Replace coc.nvim with Native LSP100%
    Replace telescope.nvim with snacks.nvim picker100%
    Replace nvim-tree with snacks.nvim explorer100%
    Update statusline to support LSP diagnostics100%
    Rewrite most config to lua100%
    Support TailwindCSS with colors100%
    Provide current screenshots100%
    Create shell installer for Linux & MacOS100%
    Better LSP configuration via EcoVim.lsp100%
    Custom formatters/linters via EcoVim config100%
    Plugin/keymap customization via EcoVim config100%