什么是Neovim?与Vim有何不同?我为什么要在乎呢?


118

我听说过Neovim ; 与Vim有何不同?主页上的所有内容仅是“幕后”的架构更改。作为用户,对我有什么区别?


1
异步功能可以节省生命。它使vim更加流畅,许多插件可以利用它。
tommyip's

辅导老师得到了改善。看起来不一样
Fernando Rodriguez

“一个漂亮的网站,这是Neovim做对的事情。” — 采访中的
迈克尔

一些基本选择对于主要目标而言似乎是奇怪且无关紧要的……很多感觉就像是一个人不喜欢旧代码并想“正确”地做。我可以同意旧代码很丑陋。但是,要进行新的实现将花费大量的精力。这很像Elvis发生的事情:重写将使它变得更好,但是花了很长时间,在此期间Vim添加了更多功能,最终Elvis用户很少。重写的猫王可能有不错的代码,但是用户没有注意到这一点。binpress.com/vim-creator-bram-moolenaar-interview
NeilG

我确实希望NeoVim带来的美好事物可以重新添加到Vim中。我的意思是,谁不想要更好的插件支持,更好的GUI和嵌入?最大的问题是如何做到这一点,以及谁将正确实施它。binpress.com/vim-creator-bram-moolenaar-interview
NeilG

Answers:


81

就像neovim主页所描述的一样,neovim的目标是为更好和更开放的社区驱动的开源项目铺平道路。

架构上的改变不仅将为vim带来更多的稳定性和性能,而且使代码更易于维护,并且对任何有兴趣贡献的人都降低了入门门槛。

关键的变化之一还包括访问vim中异步执行作业/任务的核心功能,这是很长一段时间以来vim最受欢迎的功能之一。这可以进一步帮助提高vim的性能,尤其是因为在后台作业正在执行某些操作时,vim不必阻塞。

作为vim的用户,除了neovim作为软件的增长(与发行版vim相比)要快得多(修复问题,添加功能)以及从长远来看它将具有更好的性能外,其他方面可能没有什么变化。


24
+1。我还要补充一点,用户可见的更改将很少,这一事实是一件好事。
carlosdc

27
这听起来像是对新闻稿的重新整理,而不是人们为什么要关心的实际总结。例如,我已经使用vim二十年了,不记得上一次核心程序向我展示了任何形式的不稳定,所以为什么我应该关心“更稳定”?
卡莱布

2
异步任务应该意味着不再阻塞vim的界面来进行可能在后台执行的工作。
alxndr

3
在过去两年中,是否有任何证据表明Neovim活跃,增长速度更快,性能更好?
Sparhawk

8
Vim不支持异步运行后台作业不再是事实。
丰富

35

我正在特别解决:

我为什么要在乎?作为用户,对我有什么区别?

作为Vim用户,最让我兴奋的是Neovim幕后的变化将启用的新型插件,集成和接口。

随着时间的流逝,您将开始看到与Neovim兼容但与Vim兼容的令人印象深刻的插件和程序。这里有Neovim专用插件的列表:在neovim的github中

我不知道它是什么最新的,但是我很高兴看到它随着我们拥有更多工具来使编码更高效,更有趣而不断发展。


15

Neovim给我带来的最喜欢的附加功能是终端模式。现在,您可以分割Neovim窗口,并在一侧运行终端仿真器,而在另一侧编辑文件!我想您现在甚至可以在其内部运行Neovim,以防万一您真的想这样做。

拥有异步插件也将很快变得非常有用。这意味着,仅需等待40年,我们终于可以实现非常好的代码完成!

Neovim还具有比Vim更好的鼠标支持。


2
他们应将其称为Metavim:P
Tumbler41 '51

我不知道Neovim会进行任何鼠标特定的更改,这些更改会使它比Vim更好。
jamessan'5

现在想到的是,您可以处于ssh终端会话中,打开Neovim,然后单击某个位置进行编辑。我认为Vim无法做到这一点,尽管我可能还没有足够大的.vimrc!我猜这可能比ssh支持更好地称为ssh支持。
约翰·安德森

绝对有可能通过SSH连接在Vim中使用鼠标(我刚刚尝试过),但是如果您无法使其在Vim中工作并且它在NeoVim中默认工作,那么我猜这是一个数据点,它支持您的声明NeoVim的支持更好;)。
Rich

1
我已经在Windows上运行的Putty上的SSH上通过SSH在普通Vim中使用鼠标set mouse=a了很长一段时间
Thunderbeef

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.