Hacker News 中文摘要

RSS订阅

Neovim 包 -- Neovim Pack

文章摘要

Neovim的Vim包是一个包含插件的目录,支持通过压缩包下载或版本控制仓库管理,便于更新。包内插件可相互依赖,分为启动时自动加载的“start”包和按需加载的“opt”包。Neovim在启动时会搜索“pack//start/”目录中的运行时文件,但该路径不会显式包含在runtimepath中。

文章总结

Neovim 插件包管理指南

Neovim 的插件包管理功能允许用户通过目录结构来组织和管理插件。插件包是一个包含多个插件的目录,与普通插件相比,插件包具有以下优势:

  1. 独立目录:插件包可以作为一个压缩包下载并解压到独立的目录中,避免与其他插件的文件混在一起。
  2. 版本控制:插件包可以是 Git、Mercurial 等版本控制系统的仓库,便于更新。
  3. 依赖管理:插件包可以包含多个相互依赖的插件。
  4. 自动加载:插件包中的插件可以分为自动加载的“start”包和按需加载的“opt”包。

插件包的目录结构

插件包通常放置在 ~/.local/share/nvim/site/pack/ 目录下。例如,假设你想从 /tmp/foopack.zip 添加一个插件包,可以执行以下操作:

bash mkdir -p ~/.local/share/nvim/site/pack/foo cd ~/.local/share/nvim/site/pack/foo unzip /tmp/foopack.zip

解压后,目录结构可能如下:

pack/foo/README.txt pack/foo/start/foobar/plugin/foo.vim pack/foo/start/foobar/syntax/some.vim pack/foo/opt/foodebug/plugin/debugger.vim

自动加载插件

Neovim 在启动时会扫描 pack/*/start/* 目录中的插件并自动加载。例如,pack/foo/start/foobar/plugin/foo.vim 会在启动时被加载。如果插件设置了文件类型,Neovim 还会加载相应的语法文件。

按需加载插件

对于放置在 pack/*/opt/* 目录中的插件,可以使用 :packadd 命令按需加载。例如:

vim :packadd foodebug

这会在 pack/*/opt/foodebug 目录中查找并加载 debugger.vim 文件。

插件包的管理

Neovim 提供了一个内置的插件管理器 vim.pack,它可以帮助用户管理插件。通过 vim.pack.add() 可以添加插件,vim.pack.update() 可以更新插件,vim.pack.del() 可以删除插件。例如:

lua vim.pack.add({ 'https://github.com/user/plugin1', { src = 'https://github.com/user/plugin2', name = 'plugin2' }, })

插件包的创建

如果你打算分发自己的插件包,可以按照以下目录结构组织插件:

start/foobar/plugin/foo.vim start/foobar/autoload/foo.vim start/foobar/doc/foo.txt opt/fooextra/plugin/extra.vim opt/fooextra/autoload/extra.vim opt/fooextra/doc/extra.txt

用户可以通过 Git 克隆你的插件包,并使用 :packadd 加载可选插件。

总结

Neovim 的插件包管理功能通过目录结构和命令提供了灵活的插件加载和管理方式。无论是自动加载的插件还是按需加载的插件,都可以通过简单的命令和目录结构进行管理。内置的 vim.pack 插件管理器进一步简化了插件的安装、更新和删除操作。

评论总结

评论主要围绕NeoVim内置插件管理器的引入展开,观点多样,既有支持也有质疑。以下是总结:

支持内置插件管理器的观点:

  1. 长期稳定性与标准化:部分用户认为内置插件管理器有助于长期稳定性和标准化,减少频繁更换管理器的麻烦。

    • "Hopefully, this the last VIM package manager?" (bikeshaving)
    • "But having one blessed one is probably better long term, just like built-in LSP and Treesitter." (dismalaf)
  2. 简化配置与使用:一些用户认为内置管理器简化了配置,尤其适合追求简洁的用户。

    • "Built a single file config with this... it’s lovely." (ordinaryradical)
    • "I’ve migrated over to it... No complaints so far!" (geophph)

质疑内置插件管理器的观点:

  1. 功能不足:部分用户指出内置管理器缺少关键功能,如懒加载(lazy loading),认为现有插件管理器(如lazy.nvim)更强大。

    • "It’s missing ability to lazy load plugins." (shmerl)
    • "Still primitive. But I’d love to drop lazy for this once they implement a differed load." (higon)
  2. 冗余与社区生态:有用户认为内置管理器可能带来冗余,且现有插件管理器已经做得很好,内置管理器可能破坏社区生态。

    • "It feels like bloat in a space where existing plugins did a fantastic job." (CGamesPlay)
    • "I love lazy.nvim... But recently I felt like the author is taking an aggressive user retention behavior." (higon)

其他观点:

  1. 对Emacs的调侃:有用户调侃NeoVim正在逐步接近Emacs的功能。

    • "One step closer to having all the features of Emacs." (Buttons840)
  2. 对Git功能的建议:有用户建议更好地利用Git功能,如按时间点检出代码,以避免依赖问题。

    • "I wish they would document... that they can 'checkout' a branch at a specific time." (mkhalil)
  3. 对稳定性的追求:部分用户追求极致的稳定性,甚至手动管理插件,避免任何更新带来的变化。

    • "This way, nothing changes ever. That’s how I want it." (porridgeraisin)

总体而言,用户对内置插件管理器的态度褒贬不一,支持者看重其标准化和简化配置的优势,而质疑者则担心其功能不足和对社区生态的影响。