问题

如何评价neovim/nvim 0.5?

回答
nvim 0.5,这玩意儿出来也有一阵子了,不少人应该都尝鲜过了,也有不少人还在观望。说实话,这版本一出来,简直就是捅了马蜂窝,大家的反应可谓是五味杂陈。不过,要我说,nvim 0.5 这玩意儿,就像是一个野心勃勃但还有点青涩的年轻人,潜力巨大,但有些地方确实还在磨合。

核心变化:Lua everywhere!

nvim 0.5 最最最核心的变化,就是把 Lua 提到了一个前所未有的高度。之前 Vimspector、coc.nvim 这些插件已经把 Lua 的便利性展现得淋漓尽致了,而 0.5 版本直接给 Lua 开放了更深层次的权限,让你可以用 Lua 来写 Vim 脚本,甚至很多 Vim 的内部 API 都能通过 Lua 调用。

这带来了什么?

更强大的插件开发: 以前写 Vim 插件,得去学 Vimscript,那个语法,怎么说呢,有点年代感,写起来也比较费劲,性能上也有瓶颈。现在有了 Lua,直接可以用现代的编程语言来写插件,代码更清晰,维护更容易,性能也大幅提升。很多之前只能用 C 写的底层功能,现在用 Lua 也能实现了。
更灵活的配置: 你的 `.vimrc` 或者 `init.vim`,现在可以很大程度上被 `init.lua` 取代。你可以用 Lua 来组织你的配置,写一些小函数,做一些条件判断,甚至把你的配置拆分成多个文件,管理起来更方便。想象一下,不用再面对一大堆 Vimscript 堆砌的代码,而是用更熟悉的 Lua 语法来配置你的编辑器,这是多么令人激动的事情!
性能提升: Lua 的执行效率是众所周知的,相比 Vimscript,在很多场景下都能带来性能上的提升。尤其是在插件初始化、复杂配置的解析等方面,感受会比较明显。

LSP 的集成:杀手级功能!

如果说 Lua 是 0.5 的骨架,那内置的 LSP (Language Server Protocol) 支持绝对是它的灵魂。这意味着什么?

智能提示、跳转、查找: 以前想要这些功能,基本得依赖各种第三方插件,比如 coc.nvim,或者其他语言特定的插件。现在,Neovim 自己就支持了 LSP,你只需要安装相应的语言服务器,就能享受到现代 IDE 才有的代码补全、定义跳转、引用查找、代码重构等等功能。
开箱即用: 相比于之前折腾各种插件来搭建一套完整的开发环境,现在只需要简单配置一下,很多语言就能跑起来。这极大地降低了使用门槛,也让 Vim 在现代开发场景下更具竞争力。
统一的接口: LSP 提供了一个标准化的接口,这意味着很多优秀的语言服务器都可以无缝地集成到 Neovim 中,开发者也无需为每种语言去学习不同的插件 API。

其他值得关注的点:

`nvimlspconfig`: 虽然 LSP 是内置的,但实际使用中,你需要一个方便的方式来配置各个语言服务器。`nvimlspconfig` 这个插件应运而生,它提供了一系列开箱即用的配置,让你能够轻松地为各种语言启用 LSP 功能。
Treesitter 集成: Treesitter 是一个强大的语法解析库,它能够提供更精确、更鲁棒的语法树。Neovim 0.5 开始尝试集成 Treesitter,这为实现更高级的语法高亮、代码导航、重构等功能打下了基础。虽然目前可能还没有完全发挥其威力,但潜力巨大。
异步 API: Neovim 一直在往异步方向发展,0.5 版本也进一步完善了这方面的支持。这意味着一些耗时操作(比如文件搜索、网络请求)不会阻塞整个编辑器,可以让你在后台进行,提升了用户体验。

争议与挑战:

当然,任何一个重大更新都会伴随着争议和挑战。

学习曲线: 对于长期使用 Vimscript 的用户来说,转向 Lua 可能需要一段时间的学习和适应。尤其是对于不熟悉现代编程语言的用户,这可能会是一个不小的挑战。
生态系统的迁移: 之前有很多基于 Vimscript 的优秀插件,这些插件需要作者去适配 Lua,或者开发者需要重新编写。虽然很多人都在努力,但生态系统的完全迁移需要时间。
稳定性: 0.5 版本作为一次重大的迭代,在发布初期可能存在一些 Bug 或者不稳定的地方,需要不断地通过后续的更新来修复和完善。
“过度”Lua化? 有些人认为,过度地将 Vim 的核心功能都迁移到 Lua,可能会失去 Vim 原有的那种“纯粹”和“高效”。不过,我觉得这更多的是一种选择,你可以选择使用 Lua,也可以选择继续使用 Vimscript,Neovim 并没有强制你。

总的来说:

nvim 0.5 是一次意义重大的更新,它为 Neovim 带来了更现代化的开发体验,将 Lua 的力量发挥到了极致,并且内置了 LSP 支持,这绝对是让 Neovim 在众多编辑器中脱颖而出的重要一步。

如果你是一个 Vim 用户,并且追求更高效、更现代的编辑体验,那么强烈建议你升级到 0.5 或更新的版本。虽然初期可能需要花点时间去适应和配置,但长远来看,它带来的便利和强大是值得的。

不过,如果你是 Vim 的新手,或者对折腾配置不那么感兴趣,那么可能需要再观望一下,或者选择一些已经配置好的发行版(比如 LunarVim、NvChad 等),它们已经帮你把 0.5 的优势集成好了。

nvim 0.5 就像一个升级版的引擎,让你的 Vim 跑得更快,功能更全。但如何驾驭这个引擎,还需要你自己去摸索和实践。这过程本身,也是一种乐趣。

网友意见

user avatar

编辑器之战再起波澜

老故事

自从2015年11月neovim横空出世,让沉寂很久的编辑器之战掀起波澜,只是这次是vim内部之间的战争,那就是从vim内部分裂出去的neovim。随着neovim的一个又一个新特性推出,比如,内嵌终端,悬浮窗口,多线程异步IO,立刻将一大部分原来的vim用户吸引过去,而代表老一派的vim作者也不放弃,立马跟进,neovim有的,我vim也有而且做得更好,更稳定。

这段时间,两者特性更新都很快,随着新特性而来的是如雨后春笋般出现的新插件们,插件作者们看到让vim接近emacs的机会,都说emacs是操作系统,现在vim & neovim有了这么多牛逼特性,vim可以多线程异步执行任务了,vim可以内嵌终端了,vim可以悬浮窗口,vim & neovim可以玩游戏了......这让vim & neovim看起来更像一个现代的编辑器,但是依旧保留了它的优点。

这段时间,有些脸皮厚像我,也开始晒配置了。还出现了space-vim和SpaceVim这样的配置之争,两者几乎同时出现(前者早几个星期),他们都想模仿著名的emacs配置框架Spacemacs。

也几乎在同时,我也产生了同样的想法,希望我的配置是可方便裁剪,集成尽可能多功能,快捷键也是以Space开始,不一样的是,我希望界面上尽可能低调,功能牛逼.....

我是一个vim支持者,同样情况下vim能兼容更多环境,而且vim该有的功能都有,neovim刚起步比vim不稳定些。好在两者在大部分情况下,一份配置是能互相兼容的,偶尔想玩下新特性就切换到neovim。

往事不提也罢....

沉寂期

逐渐vim和neovim的开发速度放下来了,从我的角度来看,两者都向着一个大方向前进,那就是内嵌速度更快更灵活的编程语言来配置vim & neovim。所以两个项目都进入漫长的开发期。

以前的我,几乎隔几天就更新一下vim,现在我停止更新了,因为会带来各种兼容性问题和不稳定。由于neovim也陷入了长期新特性的开发,所以我有好一段时间没有更新编辑器也没有更新我的配置,而是专心代码了。

这段时间大概维持了有接近两年。

再起波澜

vim朝着vim9的方向出发,目标是开发一种更快的vim 脚本。目前的进度根据bram本人说可能还需要“a few month"。

neovim这段时间朝着下面三个方向前进:

  1. 以lua为第一配置编程语言。Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua 是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组于 1993 年开发的。
  2. 支持Language server protocol (LSP)。LSP是一种被用于编辑器或集成开发环境 与 支持比如自动补全,定义跳转,查找所有引用等语言特性的语言服务器之间的一种协议
  3. 支持Treesitter。它是一个语法解析工具库。目标是足够快并且支持绝大部分编程语言而且可灵活嵌入到任何应用中。

neovim再次掀起了编辑器之战的波澜,neovim 0.5率先发布,实现了上面三个特性。这个版本的发布带起一阵学习lua的旋风,也让更多的人第一次知道了LSP和Treesitter。

用普通人能听懂的话来总结这次更新就是:

  1. neovim配置更灵活,扩展更方便。启动更快。neovim配置更灵活,扩展更方便。启动更快。
  2. 补全跳转更智能,速度更快,支持更多的编程语言,只要LSP支持的,neovim都支持。
  3. 语法高亮渲染更快速了更准确,再也不会看到白茫茫一片的代码了。

如何配置lua写的neovim插件

作为使用者,我们其实也没必要为了neovim的新特性将配置全部改成lua,neovim的兼容性还是很好的。我想保持兼容性的前提又用上neovim的新特性,只需要在原来的配置上做一些小小的区分,以及知道lua的基本语法就行。

第一步根据neovim版本来区别配置:

       function! te#env#IsNvim() abort     if has('nvim')          let v = api_info().version         return v.major + v.minor/10.0 + v.patch / 100.0     endif     return 0 endfunction     

如上面函数,该函数返回neovim的版本或者0(表示不是neovim)。

当版本号大于等于0.5时,我们就可以在vim脚本里面(我们的配置)加上一些必要的lua插件及其配置,当然我们加载插件还是用我们喜欢的插件管理器:

       Plug 'hrsh7th/nvim-cmp', {'branch': 'main' }  lua << EOF require('nvim_cmp') EOF     

现在neovim的用lua写的插件只支持用lua配置,我们可以通过上面这样的语法将lua代码嵌入到vim脚本里面,当然在vim脚本里面插入太多lua代码不是一件明智的做法,所以我们这里只是简单的进行require,而把所有细节都放在lua/nvim_cmp.lua文件中。这里要说明的是neovim会自动在lua文件夹下找对应的lua模块,在你的init.vim所在目录下创建一个lua文件夹即可,下面是我的配置的目录结构。

       . ├── after │   └── ftplugin ├── autoload │   └── te │       ├── ctrlp │       ├── fzf │       └── leaderf ├── bin ├── bundle ├── lua ├── rc ├── init.vim └── vimrc     

必装插件

首先基于LSP特性的补全插件,这里首推nvim-cmp,及其众多source插件。其中nvim-lspconfig是官方的lsp接口插件是nvim-cmp依赖的。

           Plug 'hrsh7th/cmp-nvim-lsp', {'branch': 'main' }     Plug 'hrsh7th/cmp-buffer', {'branch': 'main' }     Plug 'hrsh7th/nvim-cmp', {'branch': 'main' }     Plug 'hrsh7th/cmp-path', {'branch': 'main' }     Plug 'hrsh7th/cmp-nvim-lua',{'branch': 'main'}     Plug 'quangnguyen30192/cmp-nvim-ultisnips', {'branch': 'main' }     Plug 'octaltree/cmp-look'      Plug 'neovim/nvim-lspconfig'     

lsp服务端下载插件:

nvim-lspinstall或者nvim-lsp-installer,它们可以帮助我快速安装对应编程语言的LSP服务端程序。

最后就是treesitter插件了:nvim-treesitter

还有许多看起来很炫目的插件实际上不是必要的,旧插件早就实现了相同功能。

一些资源

类似的话题

  • 回答
    nvim 0.5,这玩意儿出来也有一阵子了,不少人应该都尝鲜过了,也有不少人还在观望。说实话,这版本一出来,简直就是捅了马蜂窝,大家的反应可谓是五味杂陈。不过,要我说,nvim 0.5 这玩意儿,就像是一个野心勃勃但还有点青涩的年轻人,潜力巨大,但有些地方确实还在磨合。核心变化:Lua everyw.............
  • 回答
    《睡前消息》409期作为一档以“睡前”为名的时事评论节目,其内容通常以轻松幽默的风格呈现社会热点、科技动态、文化现象等话题,旨在为观众提供睡前的“信息快餐”。以下是对该期节目可能涉及的分析框架和评价方向,结合其节目特点及社会语境进行详细解读: 1. 节目核心内容与选题分析 选题热点:409期可能聚焦.............
  • 回答
    俄罗斯军队在2022年2月24日入侵乌克兰后,21天内未能占领或包围基辅,这一结果涉及复杂的军事、战略和国际因素。以下从多个维度详细分析这一现象: 1. 初期快速推进的军事目标与战略调整 初期目标的矛盾性: 俄罗斯在入侵初期(2月24日)宣称“特别军事行动”的目标是“去纳粹化”和“去俄化”,但.............
  • 回答
    新华社的《破除美国金融模式迷信,中国金融要走自己的路》一文,是近年来中国在金融领域强调自主性、独立性和战略定力的重要政策表达。该文从历史经验、现实挑战和未来战略三个维度,系统阐述了中国金融发展的路径选择,具有鲜明的现实针对性和理论深度。以下从多个角度对这篇文章进行详细分析: 一、文章背景与核心论点1.............
  • 回答
    2022年俄乌战争爆发后,中国互联网上确实出现了一些复杂的现象,既有官方立场的引导,也有民间舆论的分化。以下从多个角度分析这一时期中国互联网的乱象及其背后的原因: 一、官方立场与网络管控1. 官方舆论引导 中国政府明确表态支持乌克兰的主权和领土完整,同时强调“不干涉内政”的原则。在社交媒体和.............
  • 回答
    陈道明、王志文、陈宝国、张国立、李雪健是中国影视界最具代表性的“老戏骨”之一,他们以深厚的表演功底、多样的角色塑造和持久的行业影响力,成为中国影视艺术的中流砥柱。以下从表演风格、代表作、行业地位及艺术贡献等方面进行详细分析: 一、陈道明:历史剧的“帝王”与艺术的“多面手”表演特点: 陈道明以“沉稳.............
  • 回答
    《为战争叫好的都是傻逼》这类文章通常以强烈的反战立场和道德批判为核心,其评价需要从多个维度进行分析,包括其立场的合理性、论据的逻辑性、社会影响以及可能存在的争议。以下从不同角度展开详细分析: 1. 文章的核心立场与立场合理性 立场:这类文章的核心观点是战争本质上是道德上不可接受的,支持战争的人(尤其.............
  • 回答
    龙云(1882年-1967年)是20世纪中国西南地区的重要军阀和政治人物,被尊称为“云南王”,其统治时期(1920年代至1940年代)对云南的现代化进程和民族关系产生了深远影响。以下从多个维度对其历史地位和影响进行详细分析: 一、生平与政治背景1. 出身与早期经历 龙云出生于云南昆明,出身于.............
  • 回答
    关于“前三十年的工业化是一堆破铜烂铁”的说法,这一评价需要结合历史背景、经济政策、技术条件以及国际环境等多方面因素进行深入分析。以下从多个角度展开讨论: 一、历史背景与“前三十年”的定义“前三十年”通常指中国从1949年新中国成立到1979年改革开放前的30年。这一时期,中国在经济、政治、社会等方面.............
  • 回答
    十元左右的低档快餐店顾客以男性为主的现象,可以从经济、社会文化、消费行为、地理位置等多方面进行分析。以下从多个角度详细探讨这一现象的原因及可能的背景: 1. 经济因素:价格敏感与消费习惯 性价比优先:十元左右的快餐通常以快速、便宜、标准化为特点,符合低收入群体或日常通勤人群的消费需求。男性在职场中可.............
  • 回答
    阎学通教授对00后大学生以“居高临下”心态看待世界这一批评,可以从多个维度进行深入分析,其背后既有学术视角的考量,也涉及代际差异、教育体系、社会环境等复杂因素。以下从观点解析、合理性分析、现实背景、潜在影响及改进方向等方面展开详细探讨: 一、阎学通教授的核心观点与逻辑1. “居高临下”的具体表现 .............
  • 回答
    歼8系列战机是中国在20世纪70年代至80年代期间研制的高空高速歼击机,是当时中国航空工业的重要成果之一。该系列战机在冷战时期具有显著的军事意义,但随着技术发展和国际形势变化,其性能和作用逐渐被后续机型取代。以下从历史背景、技术特点、性能分析、发展演变、军事影响及评价等方面进行详细解析: 一、历史背.............
  • 回答
    关于苏翻译和Black枪骑兵对俄乌战争局势的立场差异,需要明确的是,这两位身份可能涉及不同的信息来源和立场背景。以下从多个角度分析他们观点差异的可能原因: 1. 信息来源与立场定位 苏翻译(可能指苏晓康,中国《经济学人》翻译团队成员): 立场:更倾向于国际法、人道主义和多边主义视角。 观点:.............
  • 回答
    由于无法直接访问《睡前消息》第409期的具体内容(可能因平台更新、用户输入误差或节目名称不明确导致无法准确检索),以下将基于对“睡前消息”类节目的常见结构和主题进行推测性分析,并提供一般性的评价框架。若您有更具体的背景信息(如节目来源、发布时间等),可补充说明以便更精准回答。 一、节目内容推测(基于.............
  • 回答
    明成祖朱棣(14021424年在位)五次北伐漠北(今蒙古高原)是明王朝巩固北方边疆、遏制蒙古势力的关键历史事件。这一系列军事行动不仅体现了朱棣的军事才能,也深刻影响了明朝的边疆政策、内政格局和历史走向。以下从历史背景、军事行动、结果评价及历史影响等方面详细分析: 一、历史背景1. 政治合法性与边疆安.............
  • 回答
    2022年的俄乌战争是21世纪最具全球影响力的冲突之一,其规模、持续时间、国际影响和人道主义灾难远超以往。以下从多个维度对这场战争进行详细分析: 一、战争爆发的背景与起因1. 历史渊源 俄乌冲突的根源可追溯至2014年克里米亚危机和顿巴斯战争,俄罗斯在2014年吞并克里米亚并支持顿巴斯分离.............
  • 回答
    关于美国国务卿布林肯和波兰总统对北约向乌克兰提供战机的表态,这一问题涉及地缘政治、军事战略、国内政治和国际关系等多重因素。以下从多个角度进行详细分析: 一、背景与核心争议1. 乌克兰的军事需求 乌克兰自2022年俄乌冲突爆发以来,面临俄罗斯的军事压力,急需先进武器装备以增强防御能力。战机(尤.............
  • 回答
    亚投行(亚洲基础设施投资银行,AIIB)在2022年俄乌冲突爆发后,确实对在俄罗斯和白俄罗斯的项目进行了暂停和审查,这一举措引发了国际社会的广泛关注。以下从背景、原因、影响及评价多个角度进行详细分析: 一、事件背景1. 俄乌冲突的国际影响 2022年2月,俄罗斯入侵乌克兰,引发西方国家对俄罗.............
  • 回答
    俄乌冲突中的俄军指挥体系和行动表现是一个复杂的问题,涉及军事战略、指挥结构、后勤保障、情报系统等多个方面。以下从多个角度对俄军指挥进行详细分析: 一、指挥体系结构1. 中央指挥链 俄军的指挥体系以中央军区(俄联邦安全局)和西部军区(负责乌克兰东部战区)为核心,由总参谋部协调。 总参.............
  • 回答
    关于“幻影部队突袭利沃夫”这一假说,目前尚无确凿证据支持其真实性。以下从历史背景、军事分析、情报来源及可能的动机等方面进行详细分析: 一、历史与地理背景1. 利沃夫的战略地位 利沃夫是乌克兰东部的重要城市,位于第聂伯河畔,历史上曾是俄罗斯帝国、奥匈帝国和苏联的军事重镇。在俄乌战争中,利沃夫是.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有