(Neo)Vim 括号补全插件比较
内容提要
自动补全插件auto-pairs、delimitMate、nvim-autopairs和neopairs.vim都可以实现括号的自动补全功能。其中,auto-pairs和nvim-autopairs使用Vim脚本和Lua实现,分别通过监听事件来实现补全。delimitMate和neopairs.vim也可以实现自动补全,但存在一些问题。
延伸解读
实现机制差异
auto-pairs 通过监听 BufEnter 事件映射成对符号;nvim-autopairs 使用 Lua,监听 BufEnter、BufWinEnter、BufDelete、FileType 等事件,并在 on_attach 中设置 expr 映射和 InsertCharPre 监听;neopairs.vim 则监听 CompleteDone 事件判断补全项结尾是否匹配成对符号。不同机制可能影响补全触发时机和性能。
维护状态对比
根据文章数据,auto-pairs 最后提交于 2019 年,delimitMate 于 2020 年,nvim-autopairs 于 2024 年,neopairs.vim 于 2016 年。nvim-autopairs 的 Issues 和 PR 处理较活跃,而 neopairs.vim 关注度低。选择插件时,维护状态是重要参考。
已知问题与风险
文章提到 delimitMate 偶尔会出现卡屏现象,需按 ctrl-c 结束,且会输入多个 <Plug>delimitMate(,但无法百分百重现。neopairs.vim 也存在一些问题,但未具体说明。这些潜在问题可能影响编辑体验,需留意。
评估局限
对于 mini.pairs,文章指出其仓库包含 mini.nvim 和 mini.pairs,由于 mini.nvim 由几十个独立插件组合而成,无法评估其 Issues 和 pull requests 中与 mini.pairs 相关的具体数量。因此,对 mini.pairs 的维护状态无法做出准确判断。
Q&A
哪些插件可以实现括号的自动补全功能?
可以实现括号自动补全的插件包括auto-pairs、delimitMate、nvim-autopairs和neopairs.vim。
auto-pairs和nvim-autopairs的实现方式有什么不同?
auto-pairs使用Vim脚本实现,通过监听BufEnter事件来补全,而nvim-autopairs使用Lua实现,监听多个事件来实现补全。
使用delimitMate插件时可能会遇到什么问题?
使用delimitMate时,偶尔会出现卡屏现象,需要按ctrl-c结束。
哪些插件的维护状态较为活跃?
auto-pairs和nvim-autopairs的维护状态较为活跃,更新频率较高。
neopairs.vim是如何判断补全项的?
neopairs.vim通过监听CompleteDone事件,判断补全项的结尾是否匹配设定的成对符号。
mini.pairs仓库包含哪些内容?
mini.pairs仓库包含mini.nvim和mini.pairs,但无法评估其Issues和pull requests的具体情况。