需按 Neovim 版本选分支,main 对应 nvim 0.12 stable,0.13 分支仅适配 nightly 且不稳定;Windows 安装脚本要求 pwsh 版本高于 v7.1;安装前建议先读 Wiki 的 Prerequisites 页面确认依赖
nvimdots
ayamirBSD-3-Clause活跃维护一套结构清晰、开箱即用的 Neovim 配置,基于 Lua 编写,省去从零折腾 vimrc 的时间,适合想直接获得 IDE 级编辑体验的开发者。
A well configured and structured Neovim.
bash -c "$(curl -fsSL https://raw.githubusercontent.com/ayamir/nvimdots/HEAD/scripts/install.sh)"README 未说明硬件要求;启动耗时数据基于 SSD 与 CPU 环境测得(Zephyrus G14 2022)
一套开箱即用、模块化的 Neovim 配置,帮你省去从零搭建 Lua 开发环境的麻烦
一套结构清晰、开箱即用的 Neovim 配置,基于 Lua 编写,省去从零折腾 vimrc 的时间,适合想直接获得 IDE 级编辑体验的开发者。
核心能力
- 纯 Lua 编写配置,模块化结构便于按需定制
- 用 lazy.nvim 管理插件依赖
- 启动时间实测低于 50ms
- 内置 Telescope 搜索、DAP 调试与 Lazygit 终端
- 提供交互式引导脚本一键安装
容易踩的坑
- v4.3.0最新正式版2026-06-28 · 2026-06-28 04:13 UTC
Summary
This release is mainly for Neovim 0.12 stable support, completion and LSP migration, and several compatibility fixes for newer upstream APIs.
New features
- Neovim 0.12 is now the stable target of
main, while0.13is kept for nightly builds. blink.cmpreplacesnvim-cmpas the main completion engine, with cmdline completion, ripgrep-backed completion, colorful menu rendering, Lua development support, and optional Copilot or OpenAI-compatible edit prediction.- Shared AI adapter settings are introduced for CodeCompanion and completion prediction, with OpenRouter, OpenCode and OpenAI-compatible configuration entries.
- Python LSP support is updated:
pylspwas replaced byzuban/pyreflyandruff. nvim-treesitterandnvim-treesitter-textobjectsare migrated to the new main-branch setup.- New treesitter textobject keymaps are added for selecting, swapping, and moving between functions/classes/parameters.
Other changes
mason.nvimand related integrations are migrated to the newer v2 APIs.glance.nvimis removed; LSP references/implementations now use the configured Telescope or fzf-lua picker path.project.nvimconfiguration is updated for the current fork and setup API.clang-formatandruffnow prefer project-local configuration.- LSP setup is moved further toward native Neovim APIs and away from deprecated
lspconfiglegacy setup. - CodeCompanion is updated for newer APIs and model settings.
- Install scripts now clone
mainfor the current stable branch.
Bug fixes
- Fixed LSP startup and removed manual
LspStart. - Fixed project LSP detection and temporarily disabled broken project.nvim LSP attach mode where needed.
- Fixed fzf-related window behavior.
- Fixed last-edit autojump event.
- Fixed nil checks in
edgy.nvim,rainbow_delims, and several utility paths. - Fixed treesitter parser loading/highlight behavior after upstream changes.
- Fixed DAP API usage and added a keymap to close dap-ui.
- Disabled swapfile by default.
Keymap changes
<leader>dCis added to close dap-ui.gdnow usesLspsaga peek_definition.gh,gm,gto, and command panel/search flows now route through the configured picker backend.<leader>lvnow toggles virtual lines throughtiny-inline-diagnostic.- Treesitter textobject keymaps are added for
af,if,ac,ic,][,]m,]],]M,[[,[m,[],[M,<leader>a,<leader>A, and;.
Thanks
Thanks to all maintainers and contributors who keep nvimdots moving forward, including @ayamir, @Jint-lzxy, @charliie-dev, @misumisumi, @AngelontheRoad, @Cloud, @wenqian, @GuennadiMaximovC, and everyone who helped with reviews, fixes, reports, discussions, and maintenance work.
What's Changed
- fix: remove manual
LspStart, close #1478. by @ayamir in https://github.com/ayamir/nvimdots/pull/1479 - feat: add discord and deepwiki, change badge style. by @ayamir in https://github.com/ayamir/nvimdots/pull/1480
- fix(dap): update method by @AngelontheRoad in https://github.com/ayamir/nvimdots/pull/1491
- refactor(lsp): consistently use tiny-inline-diagnostic API by @Jint-lzxy in https://github.com/ayamir/nvimdots/pull/1492
- feat(plugins): replace ayamir/project.nvim with DrKJeff16/project.nvim by @Jint-lzxy in https://github.com/ayamir/nvimdots/pull/1493
- docs!: update badges and branch info for main and nightly by @Jint-lzxy in https://github.com/ayamir/nvimdots/pull/1494
- refactor(lualine): inline chat_progress and improve LSP progress display by @Jint-lzxy in https://github.com/ayamir/nvimdots/pull/1495
- refactor(cmp): streamline copilot integration by @Jint-lzxy in https://github.com/ayamir/nvimdots/pull/1499
- feat(ui): lazy load edgy.nvim by @Jint-lzxy in https://github.com/ayamir/nvimdots/pull/1501
- feat(mason)!: migrate to v2.x by @Jint-lzxy in https://github.com/ayamir/nvimdots/pull/1502
- refactor(tool): simplify fzf-lua usage and improve lazy loading by @Jint-lzxy in https://gi
- Neovim 0.12 is now the stable target of
- v4.2.02025-06-05 · 2025-06-05 12:39 UTC
查看更新说明
Summary
This release is mainly for some siginificant features and enhancement, including AI chat and find with
fzfto speed up.New features
- We introduced the AI chat functionality with codecompanion.nvim and openrouter, details about how to use it can be found in
lua/core/settings.lua. - We supported using
fzf-luato search files, patterns and symbols to speed up for huge repo. Of course,telescopeis enough for most cases, so we make the default search backend astelescope. - We redesigned the editor ui layout. Specifically, filetree and symbols outline are both on the left side now. AI chat sidebar will be shown on the right side.
Other changes
- Lsp progress will be shown in the lualine to avoid potenial occlusion of fidget.
- Native lsp api is used to configure lsp servers (instead of rely on
mason). - Stop clone submodule of
rainbow-delimiters.nvimto avoid installation failed.
Keymap changes
<leader>frand<leader>fRare used to resume last search oftelescopeandfzf-luarespectively to save time.<leader>cs,<leader>ck,<leader>ccand<leader>caare added for codecompanion related functions.
What's Changed
- fix: remove edgy.nvim to keep window size when open quickfix. by @ayamir in https://github.com/ayamir/nvimdots/pull/1458
- refactor(ui): show lsp progress in lualine. by @ayamir in https://github.com/ayamir/nvimdots/pull/1459
- feat: combine outline and filetree to save space. by @ayamir in https://github.com/ayamir/nvimdots/pull/1464
- feat: add keymap for resume telescope last search. by @ayamir in https://github.com/ayamir/nvimdots/pull/1468
- fix: remove dotnet and deprecated option by @misumisumi in https://github.com/ayamir/nvimdots/pull/1465
- refactor(mason): support for mason and mason-lspconfig v2 by @misumisumi in https://github.com/ayamir/nvimdots/pull/1466
- refactor: introduce fzf-lua as an alternative of telescope. by @ayamir in https://github.com/ayamir/nvimdots/pull/1471
- fixup(#1466): load lsp config with proper event. by @ayamir in https://github.com/ayamir/nvimdots/pull/1472
- fix: install rainbow-delimiters.nvim without cloning submodules. by @Lraxer in https://github.com/ayamir/nvimdots/pull/1476
- feat: add codecompanion to provide AI chat functionality. by @ayamir in https://github.com/ayamir/nvimdots/pull/1462
Full Changelog: https://github.com/ayamir/nvimdots/compare/v4.1.0...v4.2.0
- We introduced the AI chat functionality with codecompanion.nvim and openrouter, details about how to use it can be found in
- v4.1.02025-04-20 · 2025-04-20 14:58 UTC
查看更新说明
Summary
This release is for Neovim 0.11 stable with some bugs fixes and new features. Besides, we make 0.11 as the default branch which will make migration for newest neovim explicitly. Here are a few notable ones:
Bug fixes
- The completion entries from
nvim-lspare deduplicated. - The fmt function from
clang_formatis disabled forjavafiles. neodimis removed due to bugs sometimes occured.- Check
vim.g:colors_namebefore gen highlight groups in case of bugs when using other colorschemes. - Merge user customized config with predefined by default.
- Avoid
bufferlinenot load when open files bynvim-treeandtelescope. - Make selected region search in visual mode works.
- Make user config can be searched in telescope.
- Check nil in
on_stderrcallback for pylsp plugins install process. - Fix incorrect background color for
lualinewhen changing colorscheme dynamically.
New features
render-markdown.nvimis introduced for better native markdown rendering support, which also takes effect for lsp hover doc.edgy.nvimis introduced to manger ui layout.tiny-inline-diagnostics.nvimis introduced for better display for lsp diagnostics messages and the setting entry fordiagnostics_virtual_textis removed.nvim-spectreis replaced bygrug-far.nvimfor better user experience.local-highlight.nvimis replaced bymini.cursorwordfor more simplicity function.bigfiles.nvimis replaced byfaster.nvimfor faster big file open speed.<leader>lhis set to toggle lsp inlay hints.<leader>lvis set to toggle lsp diagnostics messages.<A-f>is set to toggle format on save function.- Support
virtual_linesfor diagnostics display by entry calleddiagnostics_virtual_linesinsettings.lua. - Support user customized snippets.
- Support omnifunc fuzzy matching introduced from neovim
0.11.
Other changes
- The install scripts no longer support Neovim 0.8, and that branch is no longer maintained. The 0.9 branch is also deprecated.
What's Changed
- docs: update startup time. by @ayamir in https://github.com/ayamir/nvimdots/pull/1318
- feat(cmp): deduplicate results from
nvim-lspby @Jint-lzxy in https://github.com/ayamir/nvimdots/pull/1321 - feat(which-key)!: support
v3by @Jint-lzxy in https://github.com/ayamir/nvimdots/pull/1324 - fix(which-key): config option
modeshas been deprecated by @Jint-lzxy in https://github.com/ayamir/nvimdots/pull/1326 - feat(lualine): always display BOM as part of the filetype by @Jint-lzxy in https://github.com/ayamir/nvimdots/pull/1327
- feat: add
render-markdown.nvimfor md workflow by @CharlesChiuGit in https://github.com/ayamir/nvimdots/pull/1336 - fix(core): disable rtp plugins via
lazy.nvim, #1339 by @CharlesChiuGit in https://github.com/ayamir/nvimdots/pull/1340 - feat(persisted): update for recent code rewrite by @Jint-lzxy in https://github.com/ayamir/nvimdots/pull/1338
- fix: some vim plugins get disabled by mistake by @Jint-lzxy in https://github.com/ayamir/nvimdots/pull/1341
- feat(lsp):
tsserverrenamed tots_lsby @Jint-lzxy in https://github.com/ayamir/nvimdots/pull/1346 - feat(clang_format): disable formatting for all Java files by @Jint-lzxy in https://github.com/ayamir/nvimdots/pull/1347
- fix(pack): inconsistent docstring by @Jint-lzxy in https://github.com/ayamir/nvimdots/pull/1348
- fix(core): correct GUI detection post v0.10.2 by @Jint-lzxy in https://github.com/ayamir/nvimdots/pull/1349
- feat(plugins)!: Remove neodim by @Jint-lzxy in https://github.com/ayamir/nvimdots/pull/1361
- fix(dropbar): remove deprecated
icons.kinds.use_deviconsby @Jint-lzxy in https://github.com/ayamir/nvimdots/pull/1360 - chores: rearrange wm keymaps by @AngelontheRoad in https://github.com/ayamir/nvimdots/pull/1363
- Add keymaps to toggle lsp inlay hints and virtual text by @AngelontheRoad in https://github.com/ayamir/nvimdots/pull/1364
- feat: auto compile
- The completion entries from
- v4.0.02024-07-01 · 2024-07-01 04:57 UTC
查看更新说明
SUMMARY
This release is not backwards-compatible since Neovim 0.10 has been officially released. While many changes have occurred since the last release, here are a few notable ones:
- The license has officially been changed to the BSD 3-Clause License. It allows you almost unlimited freedom with the software so long as you include the BSD copyright and license notice in it.
- The install scripts no longer support Neovim 0.7, and that branch is no longer maintained. The 0.8 branch is also deprecated.
- The LSP inlay hints feature has been implemented and is enabled by default. Disable it in your user settings by specifying
settings["lsp_inlayhints"] = false. - The wiki pages and
dotstutorhave been significantly updated. Check them out! - NixOS support has been extensively refactored. Refer to the wiki page and relevant PRs for details.
- Performance restrictions for Treesitter have been relaxed, as incremental parsing is now supported in 0.10. Please kindly report any performance issues encountered, as testing has been limited to a few devices.
- The built-in completion engine has updated its completion parameters. See #1279 for details.
- cmp-buffer will now provide completion results from the texts in all opened buffers.
- Go development experience has been greatly improved. See #1226 for details.
- Horizontal terminals will no longer obscure nvim-tree.
<C-e>for open-in-place inside nvim-tree has been disabled.- nvim-cmp will no longer pre-select any items, and the selected candidate won't be completed by default until you've accepted it (e.g., by pressing
<CR>). - trouble.nvim
v3is supported. - The icon library has been overhauled to support dropbar.nvim.
- indent-blankline.nvim now provides support on a per-language basis. See #1283 for details.
- LuaSnip now supports ECMAScript Regexes. Check the wiki for details.
- Format timeout is now configurable using
settings["format_timeout"]. - advanced-git-search.nvim and search.nvim have been introduced, while nvim-colorizer.lua has been replaced by nvim-highlight-colors. Check out
:Tutor dotsfor introductory tutorials on them!
[!CAUTION]
The keymaps for Telescope have been changed. See https://github.com/ayamir/nvimdots/pull/1303#issuecomment-2181965329 for the rationale behind this.Check out the "What's Changed" section and the tracking issue for minor updates.
What's Changed
- feat: implement inlay virtual text for rust and go by @ClSlaid in https://github.com/ayamir/nvimdots/pull/759
- workaroud for watchfile problem by @fecet in https://github.com/ayamir/nvimdots/pull/871
- chore(neodim): remove pin commit (#1139 #1138) by @CharlesChiuGit in https://github.com/ayamir/nvimdot
- v3.6.02024-03-22 · 2024-03-22 16:44 UTC
查看更新说明
SUMMARY
This is a backward-incompatible release. We've fixed some known issues, improved workflow, and refactored our plugins including removing, replacing, and introducing new plugins to make
nvimdotsstronger. Of course, you can add the removed plugins back freely for your own config if you depend on them.- Plugins Modifications
- Removed (infrequently used, or overkilled, or long-time-no-updates)
rainbowhxch/accelerated-jk.nvimmax397574/better-escape.nvimsindrets/diffview.nvimabecodes/tabout.nvimedluffy/specs.nvim
- Replaced (more powerful, or higher performance)
junegunn/vim-easy-aligntoechasnovski/mini.alignRRethy/vim-illuminatetotzachar/local-highlight.nvimgelguy/wilder.nvimtohrsh7th/cmp-cmdline
- Added (more intuitive, or more extensive)
folke/neoconf.nvimfor pre project customlspconfigurationtpope/vim-sleuthfor smart tab sizenvim-pack/nvim-spectrefor project-level plain text search and replacemrjones2014/smart-splits.nvimfor smart window split and resize working with terminal multiplexers (kitty, wezterm, and tmux)folke/todo-comments.nvimfor highlight of TODO, NOTE, etcnvim-neotest/nvim-niofor dependency ofnvim-dap-ui
- Removed (infrequently used, or overkilled, or long-time-no-updates)
- Keymaps Modifications
n|<A-j>andn|<A-k>are mapped to resize window vertically.n|<A-h>andn|<A-l>are mapped to resize window horizontally.n|<A-i>andn|<A-o>are mapped to switch opened buffers/tabs.n|<A-S-i>andn|<A-S-o>are mapped to move opened buffers/tabs.n|<leader>Ss,n|<leader>Sp,v|<leader>Spandn|<leader>Sfare mapped to project-level text search and replace, you can use<C-p>to check the detailed descriptions.n|<leader>Wh,n|<leader>Wj,n|<leader>Wkandn|<leader>Wlare mapped to move splitted windows.n|<leader>ldton|<leader>lxforlsp: Line diagnostic.n|<leader>citon|gciforlsp: Show incoming calls.n|<leader>coton|gcoforlsp: Show outcoming calls.n|<leader>ccton|<leader>Cforjump: Goto two chars.n|<leader>Gton|<leader>gGforgit: Open git-fugitive.n|<leader>gton|<leader>ggforgit: Open lazygit.n|<leader>trton|<leader>llforlsp: Show lsp references.n|<leader>tdton|<leader>ldforlsp: Show document diagnostics.n|<leader>twton|<leader>lwforlsp: Show workspace diagnostics.n|<leader>tqton|<leader>lqforlsp: Show quickfix list.n|<leader>tlton|<leader>lLforlsp: Show loclist.n|<leader>fnton|<leader>bnforbuffer: New.- All of
gitsigns.nvimrelated mappings which begin with<leader>hare changed to begin with<leader>g. n|<leader>gd,n|<leader>gD,n|<A-[>,n|<A-]>,n|<A-;>,n|<A-'>,n|gea,n|<A-S-j>,n|<A-S-k>,i|<A-l>andi|<A-h>are unmapped, they are free now!
- You can set the
dashboard_imageeasily inlua/user/settings.luaand check the details in wiki. - You can search selected content using
v|<leader>fsin telescope. - You can see icon and description text for different keymap prefix groups (git, fuzzy find, debug, etc).
- All opened buffers share the same
lualinewhich makes ui more concise and clearer. - The install scripts are supporting 0.10 branch now.
debugpyworks on windows properly now.
Thanks for @Jint-lzxy, @CharlesChiuGit, @aarnphm, @ClSlaid, @Cyberczy, @csyJoy, @Cheny-chui for repo maintenance and enhancement! Thanks for users who made feedback and joined our discussions! Have a look at the "What's Changed" section for minor fixes.
What's Changed
- feat(script): skip dependency installation by default by @Jint-lzxy in https://github.com/ayamir/nvimdots/pull/1114
- fix(cmp): don't auto select t
- Plugins Modifications
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
🪷 Introduction
This repo hosts our Neovim configuration for Linux (with NixOS support), macOS, and Windows. init.lua is the config entry point.
Branch info:
| Branch | Supported Neovim version |
|---|---|
| 0.13 | nvim 0.13 nightly |
| main | nvim 0.12 stable |
| 0.11 | nvim 0.11 |
| 0.10 | nvim 0.10 |
[!IMPORTANT] The
0.13branch is intended for nightly Neovim builds and is not stable. It typically harbors subtle issues scattered throughout. Therefore, refrain from submitting issues if you happen to encounter them. They will be closed directly unless a viable solution is proposed or included.
We currently manage plugins using lazy.nvim.
Chinese introduction is here.
🎐 Features
- Fast. Less than 50ms to start (Depends on SSD and CPU, tested on Zephyrus G14 2022 version).
- Simple. Runs out of the box.
- Modern. Pure
luaconfig. - Modular. Easy to customize.
- Powerful. Full functionality to code.
🏗 How to Install
Simply run the following interactive bootstrap command, and you should be all set 👍
- Windows (Note: This script REQUIRES
pwsh>v7.1)
Set-ExecutionPolicy Bypass -Scope Process -Force; Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/ayamir/nvimdots/HEAD/scripts/install.ps1'))
- *nix
if command -v curl >/dev/null 2>&1; then
bash -c "$(curl -fsSL https://raw.githubusercontent.com/ayamir/nvimdots/HEAD/scripts/install.sh)"
else
bash -c "$(wget -O- https://raw.githubusercontent.com/ayamir/nvimdots/HEAD/scripts/install.sh)"
fi
It's strongly recommended to read Wiki: Prerequisites before starting, especially for *nix users.
⚙️ Configuration & Usage
✨ Features
Tested with rhysd/vim-startuptime
👐 Contributing
- If you find anything that needs improving, do not hesitate to point it out or create a PR.
- If you come across an issue, you can first use
:checkhealthcommand provided by nvim to trouble-shoot yourself.- If you still have such problems, feel free to open a new issue!
❤️ Thanks to
🎉 Acknowledgement
📜 License
This Neovim configuration is released under the BSD 3-Clause license, which grants the following permissions:
- Commercial use
- Distribution
- Modification
- Private use
For more convoluted language, see the LICENSE.