Neovim 是久负盛名的文本编辑器 vim 的一个分支,专注于可扩展性和可用性。它不是重写,而是 vim 的延续和扩展。许多克隆和衍生产品存在,有些非常聪明——但没有一个是 vim。Neovim 是为那些想要 vim 的优点,以及更多功能的用户而构建的。在 :help vim-differences 查看差异列表。
如果您有兴趣为 Neovim 做贡献,请阅读 CONTRIBUTING.md 开始。我们有一个很棒的测试套件和自动化的 CI,所以您可以直接跳入并尝试。不要害怕打开 PR 以获取评论或只是利用基础设施!
要与团队取得联系,请加入 gitter 频道(也可以通过 IRC 访问),或者访问 Neovim subreddit,许多开发人员都会阅读。参与对话也是一种贡献!
新贡献者感谢:@ckelsel 负责移植大量 vim 修补程序,就像 @lonerover 一样。谢谢!
旧贡献者感谢:@oni-link 不是你在提交日志中经常看到的名称,但他一直在审查更改和改进复杂 PR 方面非常有帮助。谢谢!
上一个 新闻稿 已经积满了灰尘,所以我们想让你了解 Neovim 世界的最新动态。
Neovim 从那时起已经发布了 3 个 (!) 版本,所以让我们首先回顾一下这些版本。
此版本带来了一系列修复和改进。我们将在下面更详细地介绍其中一些,但请务必查看 发布页面 以获取所有详细信息。
:terminal
模式在 0.2.1 中可用,请参阅下文!curl.exe
。:terminal
已经进行了各种改进(@justinmk,#6185)findfile()
、:find
和 gf
现在可以在 :terminal
缓冲区中使用(@tweekmonster,#6009):term
正常工作(@friedsock,#4504)Reading from stdin
已删除(@msva,#6298)guicursor
现在可以在 TUI 中使用(@teto,#6423)Whitespace
用于与空白相关的 listchars
(@zhou13,#6367)DirChanged
现在可用于自动命令(@mhinz,#5928)cpoptions
:使用 _
标志切换 cw
行为(@raichoo、@chrisbra,#6235)CTRL-R
现在在粘贴到命令行时会省略尾随的 ^M
(@justinmk,#6137):edit
文件名,无需转义空格(@Kurt-Bonatz,#6119)writefile
现在遵守 fsync
选项(@ZyX-I,#6427)eval.c
已重构,并且错误消息已改进(@ZyX-I,#5119)id
函数,并且 printf(%p)
终于有用(@ZyX-I,#6095)g:loaded_*
,将禁用所有提供程序(@justinmk,commit)setpos
现在可以在其他缓冲区中设置小写标记(@hardenedapple,#5753)v:exiting
以查看 Neovim 是否正在退出(@mhinz,#5651)接下来让我们看看 0.2.1 中发生了什么。与以前一样,查看 发布说明 以获取详细信息。
:Tutor
做出了进一步改进(@fmoralesc,#7028)inccommand
现在可以使用前导修饰符,例如 keeppattern
(@jamessan,#6967):cquit
现在可以接受可选的错误代码作为参数(**@joshleeb**,#7336)。:checkhealth
现在是内置命令,它会验证你的 $VIMRUNTIME
(**@justinmk**,#7399)。cursorcolumn
和 colorcolumn
现在会尊重语法高亮(**@zhou13**,**@justinmk**,#7364)。get_keymap
以编程方式获取有关映射的信息(**@tjdevries**,#6236)。nvim_get_hl_by_name/by_id
来检索高亮(**@teto**,#7082)。bufhl
现在可以用来创建新的高亮组(**@bfredl**,#7414)。menu_get
获取菜单(**@teto**,#6322)。menu_get
会对特殊字符进行美化打印,使其可以将结果重新输入到例如 nvim_input
中(**@teto**,**@KillTheMule**,#7340)。sockconnect
连接到套接字(**@bfredl**,#6594)。serverstart
现在使用 uv_getaddrinfo()
,带来了 IPv6 支持(**@mhinz**,#6680)。:execute
调用中定义多个函数(**@ZyX-I**,#6914)。这是一个快速修复版本,主要包含 bug 修复。查看 发行说明 获取详细信息。也有一些新功能。
curdir
已作为视图选项添加(**@EricR86**,#7447)。:checkhealth
现在还会验证运行时路径(**@justinmk**,#7526)。scrollback
现在默认设置为 10000(**@justinmk**,#7556)。想知道下一个版本会有什么?以下列出了一些值得期待的功能。
CmdlineEnter
和 CmdlineLeave
自动命令(**@bfredl**,#7422)。有关 Neovim 的计划功能、目标和想法的概述,请访问 路线图。以下是一些值得注意的即将发布的 PR。
PSA:如果你从最新的 master 分支构建 Neovim,请始终查看 跟踪 HEAD 以了解任何更改。
API 客户端是 Neovim 架构的核心,它们极大地改善了开发者的体验。用你喜欢的任何语言编写插件!自从上次通讯以来,我们看到了另一个 C++ 客户端、一个 Elixir 客户端和一个 Racket 客户端。 节点客户端 进行了全面检修,并获得了一位新的维护者。感谢 **@billyvg** 接手!虽然不是全新的,但需要特别感谢 ruby 客户端 维护得很好。感谢 **@alexgenco**!
如果你碰巧喜欢其他尚未列出的语言,一个很好的起点是 文档,并且一定要在 gitter 频道 上讨论。
GUI 方面发生了太多活动,无法列出所有新的客户端,所以我们只关注一些突出的客户端。VSCode 正在使用 Neovim 来 正确集成 ex 模式命令,Sublime Text 3 也获得了 完整的 Neovim 集成。后者还利用了另一个很酷的 Neovim 特定功能,即外部化的弹出菜单,而且他们只花了 50 行代码 就实现了。最后但并非最不重要的是,eovim 是一个 enlightenment 的 Neovim 客户端。
一些学生研究了 Neovim 的架构,并发表了一篇关于他们发现的“分析文章”。如果你对更大的图景感兴趣,请务必 查看。
vimcasts 的著名人物 Drew Neil 开始录制 关于 Neovim 的节目,并开始着手编写他备受赞誉的书籍 实用 Vim 的后续作品 现代 Vim。这本书的大部分内容都适用于 Vim 8 和 Neovim 用户,但大约 1/3 的内容将涵盖 Neovim 特定功能。
Neovim 的基石之一是将 I/O 移植到 libuv。所以你会很高兴地听到 libuv 已经着手 支持更多平台。Neovim 即将登陆你附近的平台!
Neovim 通过简单易用的 Lua 语言提供轻松的测试功能。为什么其他人不这样做?原来,他们确实在做,或者至少,neomutt 项目正在为此做准备。很高兴看到 Neovim 的理念被 采纳。
自上次通讯以来的更改行数
git log --since="2016-11-01" --numstat --pretty=tformat: --numstat|gawk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s removed lines: %s total lines: %s\n", add, subs, loc }'
added lines: 255393 removed lines: 221106 total lines: 34287
合并的提交
git log --since="2016-11-01"|wc -l
3110
不同的提交作者
git shortlog -e -s -n --since="2016-11-01"|wc -l
146
文档更改
git log --since="2016-11-01" --numstat --pretty=tformat: --numstat runtime/doc|gawk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s removed lines: %s total lines: %s\n", add, subs, loc }'
added lines: 8579 removed lines: 6577 total lines: 2002
感谢贡献者、赞助商、bug 报告者和支持者。感谢 **@justinmk** 开发了这个很棒的项目,还要感谢 **@brammool** 的基础性工作。
vim 团队的 **@brammool** 和 **@chrisbra** 在我们的问题跟踪器上留下了几条评论,很高兴能与他们一起合作!
Neovim 是一个基于 Vim 的文本编辑器,它专为 可扩展性 和 可用性 而设计,旨在鼓励新的应用程序和 贡献。
访问 #neovim:matrix.org 或 irc.libera.chat 上的 #neovim 与团队聊天。