用Lua将Neovim变成一个成熟的代码编辑器

2022-02-25 17:35:57

在本教程的第一部分中,我们探讨了为什么Neovim和Lua是完美匹配的——以及您可以做些什么来定制Neovim,以便在每次编写代码时都能完成更多的工作。

现在,是时候研究一下如何利用Neovim和Lua的更大潜力了,方法是使用额外的插件扩展代码编辑器以解锁新功能。

将第三方插件集成到Neovim配置中意味着您在个性化编辑器方面拥有无限的可扩展性。

插件允许您以git集成、模糊查找器、文件浏览、语法高亮、自动完成、终端集成、调试、协作编辑等形式向Neovim添加功能……令人敬畏的Neovim插件列表非常庞大,而且每天都在增长。

让我们设置一些基础知识,为您选择NeVIM作为您的编辑器提供坚实的基础。

你首先需要的是一个插件管理器。虽然您可以自己手动安装这些插件,但使用一个可靠的工具来代表您安装、更新和删除软件包要简单得多。

Vim和Neovim最流行的软件包管理器之一是Vim plug。虽然有一种方法可以在Lua中使用vim插件,但本教程的目标是尊重Lua在Neovim最新版本中作为一流语言的地位。因此,让我们学习如何使用实际上用Lua本身编写的包管理器:Packer。

受Emacs use package宏的启发,Packer构建在Vim处理软件包的本机功能之上。它提供了几个有用的特性——包括延迟加载(用于减少启动时间)、使用Luarock以及直接使用git分支。

打包机需要安装在打包路径的某个位置。这些是Neovim用来查找包的目录。要查看packpath中文件系统上的当前位置,可以在命令模式下执行以下Lua命令:

输出应该返回几个逗号分隔的值,显示系统上不同位置的绝对文件路径,Neovim在加载包时会查看这些文件路径。例如,作者的packpath中的第一个条目是/home/jayascript/。配置/nvim。换句话说,Packer可以安装在迄今为止用于配置Neovim的同一目录中。

事实证明,这是一个很好的解决方案,因为它将所有Neovim配置——包和所有配置——都保存在一个目录中。

让我们继续将Packer安装到此目录。在Unix系统上,只需将存储库克隆到所需的目录:

这将在Neovim配置目录中创建一个新文件夹/站点。您可以查看在此目录中创建的所有新文件和文件夹。Packer将在这里安装和配置您指定的任何插件。

首先,您需要告诉Neovim它应该使用Packer插件。在/lua子目录中,在Neovim中打开一个名为plug的新文件。lua并添加以下代码行:

--[[plug.lua]]

该代码块表示每次启动Neovim时加载打包机模块。它还将package_root设置为克隆Packer存储库的位置。接下来,在init文件中取消对导入插件模块的行的注释:

--进口

现在,当您重新启动Neovim时,可能会看到一条错误消息,显示模块“packer”not found。如果发生这种情况,则需要更新packpath变量,以确保Neovim知道在哪里可以找到打包机安装。可以通过向vars添加以下代码行来实现这一点。卢阿:

--[[vars.lua]]

在这里,您创建了一个局部变量packer_路径,该路径指向Neovim配置目录中的新站点文件夹,与克隆packer存储库时创建的路径相同。然后,通过将此位置附加到现有的packpath来更新packpath。(双点,即……,是字符串连接的Lua语法。)

现在,在Neovim中打开一个新的缓冲区,您应该看到这个错误已经解决。

您可以通过在命令模式下运行:PackerStatus来确认封隔器已成功安装和定位。您可能会看到这样的错误消息:

所有这一切意味着Packer没有可操作的插件。别担心!我们可以很容易地解决这个问题。让我们开始为Neovim配置添加一些插件。

首先,你可能想安装一个更直观的文件浏览器。Neovim有几个选项供您选择;NERDTree是一种很受欢迎的树。

然而,为了与选择Lua优先选项的主题保持一致,本教程将使用用Lua编写的nvim树。

要安装新插件,请打开插件。lua并向打包机启动功能添加新条目:

要安装新插件,请打开插件。lua并向打包机启动功能添加新条目:

对于要安装的每个新插件,您都将声明一个use package语句。此声明通常遵循使用{';用户名/存储库';}用于从GitHub安装的软件包。这样,Packer就可以通过直接从存储库中下拉更改来更新任何指定的插件。

然后,在命令模式下运行命令:PackerInstall。应该会弹出一个拆分窗口,显示Packer已经从GitHub中下载了代码并安装了插件。如果出现任何问题,它将显示一条错误消息,您可以使用它来解决任何问题。

安装插件后,应将其告知Neovim,以确保不会遇到任何错误。在init文件中添加一个新部分,并确保nvim树是必需的导入:

--进口

现在已经安装并配置了文件浏览器,您需要设置一个键绑定来切换它。通过向密钥中添加以下代码行来实现这一点。lua文件:

--[[keys.lua]]

这种新的键映射在正常模式下可用。密钥序列使用前导密钥(在init文件中定义)和字母n,要执行的命令是切换nvim树的命令。保存并获取所有文件的源代码后,应该能够打开和关闭文件树。还可以通过按CTRL+w,然后按h、j、k或l,在文件树和任何打开的文件之间切换,具体取决于要移动的方向。这将使您构建自定义配置的速度更快,因为您可以使用树轻松地在每个文件之间来回切换。

本节将帮助您配置编辑器美学。使用Packer,您将安装以下插件:

让我们在插件文件中添加一个主题部分,并告诉Packer安装它们:

--[[plug.lua]]

退出Neovim并打开一个空缓冲区。您应该会看到Startify已启用,屏幕顶部有cowsay的一句话。您应该能够快速跳转到最近的文件进行编辑。如果您使用Vim键上下跳跃,您应该会看到信标也已启用。

然而,Lualine可能不会出现,而且颜色仍然有点难看。您需要进行一些额外的配置来解决这些问题。

--[[opts.lua]]

在文件的顶部,将Neovim API命令别名为cmd,这使您可以轻松地在Lua中运行Vim函数。然后,在配置文件的相关部分调用要执行的命令(这里是用于设置colorscheme的命令)。

继续使用:luafile%刷新缓冲区。颜色会自动更新。好多了!

在本节中,您要做的最后一件事是配置Lualine。使用nvim树导航到您的init文件,并将以下代码添加到最底部:

--插件

Dracula是一款非常流行的配色方案,从Slack到Emacs,再到Xresources等等,都有现成的主题。使用德古拉主题可以确保Neovim和Lualine的颜色同步。这段代码导入Lualine模块并调用其设置函数,将主题设置为dracula nvim,为方便起见,它与Lualine捆绑在一起。

使用:luafile%再次获取文件,并观看新配置的statusline就在眼前出现!

最后,我们将配置一些插件,以帮助您在编程时使用Neovim作为您的IDE选择:

Tagbar:查看给定文件中定义的任何类或函数的结构。

让我们在插件文件中添加一个Dev部分,并告诉Packer安装它们:

--[[plug.lua]]

运行:PackerInstall安装新插件。您可以通过在命令模式下尝试以下命令(其中<;cr>;是返回键)来检查一切是否正常:

:Git(这不是Git存储库,因此应该显示一条错误消息)

:GV(与上面相同,但请检查您是否看到一条错误消息,上面写着not in git repo或类似内容)

一切似乎都很顺利。但是,为了更好地将这些新增功能集成到配置中,还可以进行一些更改。

首先,我们来处理自动播放,因为没有检查。前往init文件添加新的导入:

--插件

使用:luafile%获取文件源,并在插入模式下插入一个开括号或圆括号,确认已启用自动播放。

现在,让我们添加一些键绑定来切换其他插件。将下面的Python代码保存到您的机器上作为测试。py:

#切换测试。py

您不需要安装Python或运行此文件。只要用Neovim打开它,确保你能看到缩进线。

--[[keys.lua]]

保存并源文件。然后,使用引导键和ff打开望远镜。搜索toggle_测试。py Python文件,然后按Enter键转到它。练习使用引线键和l来打开和关闭缩进线。leader键和t的组合将打开标记栏,您可以在其中检查Python函数的结构。

最后,让我们确保编辑器能够与git集成。

导航到本地机器上的git存储库并打开Neovim缓冲区。运行命令:Git status并确认您可以看到回购协议的当前状态。然后,运行:GV打开提交历史记录。您可以使用Vim键浏览提交,然后按Enter键查看更多详细信息。结果窗口将显示提交哈希、作者、消息以及当时提交到存储库的更改。

一如既往,您可以:q关闭任何窗口并完全退出Neovim。但你现在已经知道了,不是吗?😉

为了让您更好地了解这在现实世界中是什么样子,下面我们来看一下我自己的个人定制:

说实话,我们甚至还没有触及到根据您的具体规格配置Neovim的所有方法。然而,你在这里采取的步骤应该足以让你开始。

强烈建议您花一些时间阅读此处配置的每个插件的文档。您可能希望启用(或禁用)其他功能,它们通常带有默认键绑定,这将帮助您更高效地使用它们。(例如,nvim tree有一系列键映射,可以用来创建、重命名和删除文件和目录,而无需离开Neovim。)

随意设置、取消设置和映射选项和关键点,以满足您的心愿。当您准备好扩展Neovim环境时,您可以安装几十个甚至数百个附加插件,以提高生产效率并增强设置。

由于一支充满激情的开发团队,Neovim已经成为现代最受欢迎的IDE之一。虽然您在本教程中构建的配置相对简单,但(我敢说)可以将Neovim扩展到甚至可以与VSCode匹敌的地方。

尽管如此,Neovim仍处于早期阶段,几乎每晚都会出现突破性的变化。即便如此,这意味着用户只能期待更多的插件和更好的功能,因为它的核心工作仍在继续。

Neovim和Lua的结合为希望留在终端并喜欢确定其环境如何工作的每个方面的开发人员提供了强大的可扩展性。如果将配置存储在。dotfiles存储库,您可以在任何地方复制您的设置。

有关更多信息,请查看Neovim官方存储库以及Neovim+Lua指南。

这篇博文是作为Mattermost社区写作计划的一部分创建的,并在CC BY-NC-SA 4.0许可下发布。要了解更多有关Mattermost社区写作计划的信息,请查看此。