{"id":22213924,"url":"https://github.com/pomeluce/nvim","last_synced_at":"2026-05-09T05:34:16.884Z","repository":{"id":170487041,"uuid":"600638986","full_name":"pomeluce/nvim","owner":"pomeluce","description":"akirvim: 现代化 neovim 集成开发环境","archived":false,"fork":false,"pushed_at":"2026-05-07T01:49:22.000Z","size":700,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-05-07T03:35:02.807Z","etag":null,"topics":["ide","lua","neovim","nvim","vim"],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pomeluce.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":"2023-02-12T05:18:21.000Z","updated_at":"2026-05-07T01:49:26.000Z","dependencies_parsed_at":"2023-12-18T12:45:32.264Z","dependency_job_id":"bfd590dc-0b9f-482e-923b-076c2773b33c","html_url":"https://github.com/pomeluce/nvim","commit_stats":null,"previous_names":["in-depth-1/nvim","pomeluce/nvim"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/pomeluce/nvim","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pomeluce%2Fnvim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pomeluce%2Fnvim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pomeluce%2Fnvim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pomeluce%2Fnvim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pomeluce","download_url":"https://codeload.github.com/pomeluce/nvim/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pomeluce%2Fnvim/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32808528,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-08T08:22:46.396Z","status":"online","status_checked_at":"2026-05-09T02:00:06.633Z","response_time":123,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["ide","lua","neovim","nvim","vim"],"created_at":"2024-12-02T21:12:36.786Z","updated_at":"2026-05-09T05:34:16.875Z","avatar_url":"https://github.com/pomeluce.png","language":"Lua","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align='center'\u003e\n\n# AKIRVIM\n\n\u003c/div\u003e\n\n- [使用说明](#使用说明)\n- [配置说明](#配置说明)\n- [目录结构](#目录结构)\n- [Packman 插件管理](#packman-插件管理)\n\n### 使用说明\n\n1. backup 原有 nvim 配置, 并删除 nvim 数据目录\n\n```\ncp ~/.config/nvim /you/backup/path/nvim-bak\n\nrm -rf ~/.local/share/nvim/\n```\n\n2. 所需环境(以 nixos 为例)\n\n```nix\n{\n  environment.systemPackages = with pkgs; [\n    bat\n    fd\n    fzf\n    ripgrep\n    silver-searcher\n    tree-sitter\n    unzip\n    wl-clipboard\n    luajitPackages.luarocks\n    luajitPackages.jsregexp\n    python314Packages.pynvim\n    translate-shell\n    imagemagick\n\n    # lsp\n    basedpyright\n    bash-language-server\n    clang-tools\n    cmake-language-server\n    copilot-language-server\n    emmet-language-server\n    kotlin-language-server\n    lua-language-server\n    marksman\n    nil\n    rust-analyzer\n    tailwindcss-language-server\n    taplo\n    typescript-language-server\n    vscode-langservers-extracted\n    vue-language-server\n\n    # dap\n    gdb\n    vscode-extensions.ms-vscode.cpptools\n    vscode-extensions.vadimcn.vscode-lldb.adapter\n    vscode-extensions.vscjava.vscode-java-debug\n    vscode-js-debug\n    vscode-extensions.firefox-devtools.vscode-firefox-debug\n\n    # fmt\n    beautysh\n    cbfmt\n    nixfmt\n    prettier\n    prettierd\n    ruff\n    rustfmt\n    shfmt\n    sqlfluff\n    stylua\n  ];\n}\n```\n\n3. 拉取 akirvim 配置\n\n```shell\ncd ~/.config/ \u0026\u0026 git clone https://github.com/pomeluce/nvim.git\n```\n\n4. 执行 nvim 命令, 等待安装完成\n\n```\nnvim\n```\n\n### 配置说明\n\n在配置目录下创建 `settings.json` 来自定义行为。所有配置项均为可选，未配置时使用默认值。\n\n#### 示例\n\n```json\n{\n  \"mason\": {\n    \"enable\": true\n  },\n  \"theme\": {\n    \"enable\": true\n  },\n  \"session\": {\n    \"projects\": [\"/home/user/project1\", \"/home/user/project2\"],\n    \"ignore_dir\": [\"/tmp\", \"/var\"]\n  },\n  \"lsp\": {\n    \"jdtls\": {\n      \"runtimes\": [\n        {\n          \"name\": \"JavaSE-21\",\n          \"path\": \"/usr/lib/jvm/java-21-openjdk\"\n        }\n      ],\n      \"maven\": {\n        \"executable\": \"/path/to/mvn\"\n      }\n    }\n  }\n}\n```\n\n#### 配置项说明\n\n| 配置项               | 类型       | 默认值  | 说明                                             |\n| -------------------- | ---------- | ------- | ------------------------------------------------ |\n| `mason.enable`       | `boolean`  | `false` | 启用 Mason 插件管理器，自动安装配置的 LSP 和 DAP |\n| `theme.enable`       | `boolean`  | `false` | 启用自定义主题（mini.base16 配色方案）           |\n| `session.projects`   | `string[]` | `[]`    | 项目路径列表，用于 neovim-project 项目切换       |\n| `session.ignore_dir` | `string[]` | `[]`    | 自动保存 session 时忽略的目录列表                |\n| `lsp.jdtls.runtimes` | `object[]` | `[]`    | jdtls Java 运行时配置，每项包含 `name` 和 `path` |\n| `lsp.jdtls.maven`    | `object`   | `{}`    | jdtls Maven 配置，如 `executable` 路径           |\n\n### 目录结构\n\n```\n.\n├── after\n│   ├── ftplugin\n│   ├── lsp\n│   └── plugin\n├── init.lua\n├── LICENSE\n├── lua\n│   ├── configs\n│   ├── core\n│   ├── packman\n│   ├── plugins\n│   └── utils.lua\n├── nvim-pack-lock.json\n├── README.md\n├── settings.json\n└── snippets\n```\n\n### Packman 插件管理\n\n基于 Neovim 0.12 原生 `vim.pack` API 的声明式插件管理框架，提供类似 lazy.nvim 的使用体验。\n\n#### 模块结构\n\n```\nlua/packman/\n├── init.lua      # 入口: setup() 收集 spec 并加载插件\n├── spec.lua      # Spec 解析: 短格式转 URL、推断 name、校验字段\n├── loader.lua    # 加载引擎: vim.pack.add() 注册、延迟加载调度\n├── registry.lua  # 注册表: 追踪插件声明/加载/延迟状态及完整 spec\n├── cache.lua     # 加载耗时统计\n├── ui.lua        # Pack 面板: 多 Tab 浮窗 + 异步 git 操作\n└── types.lua     # 类型定义(---@type packman.SpecItem[])\n```\n\n#### Spec 格式\n\n```lua\n---@type packman.SpecItem[]\nreturn {\n  {\n    'owner/repo',                        -- 短格式, 自动转为 GitHub URL\n    event = 'VimEnter',                  -- 延迟加载: 事件 / keys / cmd / ft\n    dependencies = { 'dep/one' },        -- 依赖(自动先加载)\n    opts = { ... },                      -- 传给 require().setup() 的配置\n    config = function() ... end,         -- 自定义配置(替代 opts)\n    main = 'custom-module',              -- 覆盖推断的 Lua 模块名\n    version = 'main',                    -- 版本约束或 git branch\n    enabled = true,                      -- 是否启用\n  },\n}\n```\n\n#### 延迟加载\n\n| 条件     | 示例                 | 触发方式                 |\n| -------- | -------------------- | ------------------------ |\n| 事件     | `event = 'UIEnter'`  | `autocmd`                |\n| 按键     | `keys = '\u003cleader\u003es'` | 首次按键时加载并重新触发 |\n| 命令     | `cmd = 'Neogen'`     | 首次执行命令时加载并执行 |\n| 文件类型 | `ft = 'python'`      | `FileType` autocmd       |\n\n#### 命令\n\n| 命令            | 说明                               |\n| --------------- | ---------------------------------- |\n| `:Pack`         | 打开 Pack 面板（默认 Plugins Tab） |\n| `:Pack update`  | 打开面板并切换到 Update Tab        |\n| `:Pack profile` | 打开面板并切换到 Profile Tab       |\n| `:Pack clean`   | 打开面板并切换到 Clean Tab         |\n\n#### Pack 面板\n\n统一的面板 UI，包含 4 个 Tab 页：\n\n- **Plugins** — 查看所有已声明插件（状态、版本、加载耗时）\n- **Profile** — 插件加载耗时排名（含柱状图）\n- **Update** — 异步检查更新、安装缺失插件、执行更新\n- **Clean** — 清理未声明的插件\n\n面板内快捷键：\n\n| 按键    | 说明                       |\n| ------- | -------------------------- |\n| `1-4`   | 切换 Tab                   |\n| `S`     | Sync（安装缺失 + 更新）    |\n| `U`     | 更新所有插件（Update Tab） |\n| `u`     | 更新选中插件（Update Tab） |\n| `X`     | 移除选中插件（二次确认）   |\n| `c`     | 清理未声明插件（二次确认） |\n| `C`     | 取消进行中的操作           |\n| `R`     | 刷新 Profile Tab           |\n| `?`     | 帮助                       |\n| `q/Esc` | 关闭面板                   |\n\n首次启动时，若检测到缺失插件会自动打开 Update Tab 并显示安装进度。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpomeluce%2Fnvim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpomeluce%2Fnvim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpomeluce%2Fnvim/lists"}