❄️ Neve ❄️
Showcase

Showcase

Neve 是什么?
Neve(葡萄牙语中的“雪”)是为 Nixvim 精心打造的自定义配置,旨在革新您的开发工作流并提供无与伦比的编码体验。该配置是专业知识与热情的结晶,旨在提供合理的默认设置。
特性
-
强大的开发环境: Neve 旨在提供一个稳健且高效的开发环境。通过精心挑选的插件、优化的设置和周到的自定义,它确保您的编码之旅既顺畅又高效。
-
Nixvim 集成: 基于 Nixvim 构建,Neve 与强大的 Nix 包管理器无缝集成。这种集成不仅简化了设置过程,还确保了在不同机器上一致且可复现的开发环境。
-
周到的自定义: Neve 不仅仅停留在默认设置上。它被设计为易于自定义,允许您根据独特的偏好和工作流来调整您的 Nixvim 体验。
-
广泛的插件支持: 受益于涵盖多种编程语言和开发任务的精选插件。Neve 附带预配置的插件以提升您的生产力,您可以轻松扩展其功能以满足您的特定需求。
-
极速启动: 非核心插件通过 lz.n 借助 Nixvim 的原生懒加载支持(
plugins.lz-n)进行懒加载 —— telescope、cmp、dap、neotest、harpoon 及其相关插件仅在首次使用时加载(由命令、键位映射、事件或文件类型触发)。请参阅 Performance 部分以获取测量数据。
Performance
在作者机器上测量的启动时间(热启动,nvim --headless --startuptime /tmp/st.log +q,5 次运行):
| 之前(立即加载) | 之后(懒加载) | |
|---|---|---|
| 平均值 | ~181ms | ~77ms |
| 中位数 | ~177ms | ~73ms |
| 范围 | 159–210ms | 69–96ms |
启动速度提升约 58%(节省约 104ms)。
时间消耗去向:sourcing vimrc (init.lua) 从 58.7ms 降至 35.8ms,插件包加载从 6.2ms 降至 2.1ms,而诸如 harpoon(约 4ms)、neotest-java(约 1.1ms)和 telescope 扩展(约 0.15ms)等立即加载的 require 在启动时不再执行。LSP、treesitter、lualine 及其他核心插件按设计保持立即加载。
自行测量方法:
NVIM=$(nix build . --no-link --print-out-paths)/bin/nvim
$NVIM --headless --startuptime /tmp/st.log +q
grep 'NVIM STARTED' /tmp/st.log
安装
开始使用 Neve 非常简单。只需按照下方的安装指南操作,您很快就能上手。
不过,如果您想在安装前先试用一下,可以使用 nix run github:redyf/neve!
安装指南
我假设您已经在 nix flakes 中,但如果您还没有,请查看此教程以启用它们:-
前往 flake.nix 并在您的 inputs 中添加 Neve.url = "github:redyf/Neve"。
-
运行 nix flake update,然后 Neve 应该就可以安装了。
选项 1:使用 Flakes 将 Neve 作为 Nixvim 模块安装。
- 通过向 Nixvim 配置中添加以下代码来安装它:
programs.nixvim = {
enable = true;
imports = [ inputs.Neve.nixvimModule ];
# Then configure Nixvim as usual, you might have to lib.mkForce some of the settings
colorschemes.catppuccin.enable = lib.mkForce false;
colorschemes.nord.enable = true;
};
- 重建你的系统,你应该就完成了:
选项 2:使用 Flakes 将 Neve 作为软件包安装
启用后,请按照以下步骤操作:
-
通过在你的 environment.systemPackages 或 home.packages(如果你使用的是 home-manager)中添加
inputs.Neve.packages.${pkgs.system}.default来安装它。 -
重建你的系统,你应该就完成了:
如何启用/禁用模块
对于不熟悉 nix 模块化结构的人,请务必查看由 Vimjoyer 制作的这篇优秀教程。Modularize NixOS and Home Manager | Great Practices
基本上,你只需要进入每个目录的 default.nix 文件,并启用/禁用 mkDefault 选项。
假设你想启用 neo-tree,为此你需要进入 config/filetrees/default.nix 并更改其值 从
config = lib.mkIf config.filetrees.enable {
neo-tree.enable = lib.mkDefault false;
};
到
config = lib.mkIf config.filetrees.enable {
neo-tree.enable = lib.mkDefault true;
};
然而,有时你在同一目录下会有许多插件,逐个更改它们的值可能会相当麻烦。因此,你可以像下面这样在 config/default.nix 中一次性禁用它们:
例如,要禁用所有 UI 插件,你可以轻松地在 config/default.nix 中将值从 true 切换为 false:
ui.enable = lib.mkDefault false;
如何自定义安装
如果您希望根据自己的喜好自定义 Neve,请查看此内容!
1- Fork 该仓库(你也可以更改 fork 的名称,如果你愿意的话)。
2- 克隆该 fork。
3- 进行您想要的更改,例如启用/禁用插件、更改配色方案、neovim 选项等。
4- 将 fork 添加到你的 flake.nix 文件中,原始的是 Neve.url = “github:redyf/Neve”。如果一个名为 foo 的用户 fork 了该仓库并将其重命名为 bar,则它将是 bar.url = “github:foo/bar”。
5- 更新你的输入并使用 inputs.Neve.packages.${pkgs.system}.default 安装该 fork。
6- 重新构建系统,你就完成了!
快速入门
Neve 具有高度可定制性。以下是用于配置您环境的一些重要文件:
-
config/default.nix: 此文件包含主配置文件。您可以随意添加或删除插件。
-
config/sets/set.nix: 在此文件中,您可以添加或移除选项并调整其具体设置。
-
config/keys.nix: 此文件包含自定义按键映射。您可以添加自己的键盘快捷键以提高生产力。
-
config/lsp/lsp-nvim.nix: 在此处您可以配置您首选的 Language Servers。
-
config/lsp/conform.nix: 为所需语言配置格式化程序。
-
config/languages/nvim-lint.nix: 为特定语言配置 linter。
贡献
欢迎贡献!请随时提交 issue 以报告问题、提出改进建议,或提交 pull request 为 Neve 添加新功能。
许可证
本项目采用 MIT License 授权。有关更多详情,请参阅 LICENSE 文件。
支持
遇到问题或有疑问?请访问我们的 Issue Tracker 或在 Discord 上给我发消息,我的用户名是 redyf。
祝编码愉快!
