跳至内容

简介

在本手册中,您将找到使用 Neovim 和 NvChad 实现功能齐全的 (IDE) 的方法。

我说“方法”是因为有很多可能性。作者在此着重于使用这些工具编写 Markdown,但如果 Markdown 不是您的重点,请放心继续阅读。如果您不熟悉 NvChad 或 Neovim 中的任何一个工具,那么本手册将为您介绍两者。如果您按照本手册的步骤进行,您很快就会意识到,您可以设置这个环境,以极大地帮助您满足任何编程或脚本编写的需求。

想要一个有助于编写 Ansible Playbook 的 IDE?您可以得到!想要一个 Golang IDE?也有。只想获得一个编写 BASH 脚本的良好界面?也有。

通过使用linter,您可以设置一个为您量身定制的环境。最棒的是,一旦您设置好环境,就可以通过 lazy.nvimMason(这两者在本手册中都有介绍)来快速更新,以获取新更改。

由于 Neovim 是 Vim 的一个分支,因此 Vim 用户对整体界面会比较熟悉。如果您不是 Vim 用户,您将可以利用本手册快速掌握命令的语法。这里涵盖了大量信息,但易于理解,一旦您完成了内容,您就会知道足够多的知识,可以用这些工具为您的需求构建您自己的 IDE。

作者的意图是将本手册按章节划分。原因是章节意味着需要遵循的顺序,而大多数情况下,这并非必要。您需要从本页开始,阅读并遵循“附加软件”、“安装 Neovim”和“安装 NvChad”部分,但之后,您可以选择如何继续。

将 Neovim 用作 IDE

Neovim 的基本安装提供了出色的开发编辑器,但还不能称之为 IDE;更高级的 IDE 功能,即使已经预设,也尚未激活。为此,我们需要向 Neovim 传递必要的配置,而 NvChad 就在这里为我们提供了帮助。它允许我们只需一个命令即可开箱即用地获得基本的配置!

配置是用 Lua 编写的,Lua 是一种非常快速的编程语言,它使 NvChad 能够拥有非常快的启动和命令及按键执行时间。这也要归功于用于插件的延迟加载技术,它只在需要时加载插件。

界面非常简洁且令人愉悦。

正如 NvChad 的开发者所强调的那样,该项目仅旨在作为构建您自己的个人 IDE 的基础。后续的自定义是通过使用插件完成的。

NvChad UI

主要特点

  • **设计快速。** 从编程语言的选择到组件加载技术,一切都旨在最大限度地减少执行时间。
  • **吸引人的界面。** 尽管是cli应用程序,但界面在图形上看起来现代而美观,并且所有组件都完美地融入了 UI。
  • **高度可配置。** 由于派生自基础应用程序(NeoVim)的模块化,该编辑器可以完美地适应个人需求。但是,请记住,当我们谈论自定义时,我们指的是功能,而不是界面的外观。
  • **自动更新机制。** 编辑器附带一个机制(通过使用git),允许通过简单的 :NvChadUpdate 命令进行更新。
  • **由 Lua 提供支持。** NvChad 的配置完全用lua编写,这使其能够无缝集成到 Neovim 的配置中,从而利用其所基于的编辑器的全部潜力。
  • **众多内置主题。** 该配置已包含大量主题可供使用,始终记住我们谈论的是cli应用程序,主题可以通过 <leader> + th 键进行选择。

NvChad Themes

参考文献

Lua

什么是 Lua?

Lua 是一种健壮、轻量级的脚本语言,支持多种编程方法。“Lua”这个名字来源于葡萄牙语,意思是“月亮”。

Lua 由 Roberto Ierusalimschy、Luiz Henrique de Figueiredo 和 Waldemar Celes 在里约热内卢天主教大学开发。他们之所以开发 Lua,是因为直到 1992 年,巴西都受到严格的硬件和软件进口管制,出于纯粹的需要,这三位程序员开发了自己的脚本语言 Lua。

由于 Lua 主要侧重于脚本,因此它很少被用作独立的编程语言。相反,它通常被用作可以集成(嵌入)到其他程序中的脚本语言。

Lua 被用于视频游戏和游戏引擎(Roblox、Warframe 等)的开发,许多网络程序(Nmap、ModSecurity 等)的编程语言,以及工业程序的编程语言。Lua 也被用作库,开发者可以将其集成到他们的程序中,以通过充当宿主应用程序的组成部分来实现脚本功能。

Lua 的工作原理

Lua 有两个主要组件:

  • Lua 解释器
  • Lua 虚拟机 (VM)

Lua 不像 Python 等其他语言那样直接通过 Lua 文件进行解释。相反,它使用 Lua 解释器将 Lua 文件编译成字节码。Lua 解释器具有高度的可移植性,能够在多种设备上运行。

关键特性

  • 速度:Lua 被认为是解释型脚本语言中最快的编程语言之一;它比大多数其他编程语言执行性能要求高的任务更快。
  • 大小:与其他编程语言相比,Lua 非常小巧。这种小巧的尺寸非常适合将 Lua 集成到多种平台,从嵌入式设备到游戏引擎。
  • 可移植性和集成:Lua 的可移植性几乎是无限的。任何支持标准 C 编译器的平台都可以轻松运行 Lua。Lua 不需要复杂的重写即可与其他编程语言兼容。
  • 简洁性:Lua 设计简洁,但功能强大。Lua 的主要功能之一是元机制,它允许开发者实现自己的功能。语法简单易懂,因此任何人都可以学习 Lua 并在自己的程序中使用它。
  • 许可:Lua 是免费且开源的软件,根据 MIT 许可分发。这使得任何人都可以出于任何目的使用它,而无需支付任何许可或版税。

Neovim

Neovim 在其专用页面上进行了详细描述,因此我们将只关注其主要特点,这些特点是:

  • 性能:非常快。
  • 可定制:拥有丰富的插件和主题生态系统。
  • 语法高亮:与 Treesitter 和 LSP 集成(需要一些额外的配置)。
  • 跨平台:Linux、Windows 和 macOS
  • 许可:MIT:一个简短而简单的宽松许可,仅要求保留版权和许可声明。

LSP

什么是 (LSP)?

语言服务器是一个标准化的语言库,它使用自己的程序(协议)来支持自动完成、跳转到定义或鼠标悬停定义等功能。

语言服务器协议 (LSP) 的理念是标准化工具和服务器之间的通信协议,以便一个语言服务器可以在多个开发工具中重复使用。通过这种方式,开发者可以简单地将这些库集成到他们的编辑器中,并引用现有的语言基础设施,而不是定制他们的代码来包含它们。

tree-sitter

Tree-sitter 主要由两个组件组成:一个解析器生成器和一个增量解析库。它可以构建源代码文件的语法树,并随着每次更改有效地更新它。

解析器是一个将数据分解成更小元素以方便翻译成另一种语言的组件,或者像在本例中一样,用于随后传递给解析库。一旦源代码文件被分解,解析库就会解析代码并将其转换为语法树,从而可以更智能地操作代码结构。这使得改进(并加快)成为可能

  • 语法高亮
  • 代码导航
  • 重构
  • 文本对象和移动
LSP 和 tree-sitter 的互补性。

虽然这两个服务(LSP 和 tree-sitter)看起来似乎是冗余的,但它们实际上是互补的,因为 LSP 在项目级别工作,而 tree-sitter 只在打开的源代码文件上工作。

现在我们已经解释了用于创建 IDE 的技术,我们可以继续进行配置我们的 NvChad 所需的附加软件

作者:Franco Colussi

贡献者:Steven Spencer, Ganna Zhyrnova