如何使用任何语言的Vim代码完成工具

427 阅读8分钟

数字化是每个行业的最前沿。随着越来越多的创新公司竞争生产一流的产品和服务,加快流程成为保持市场领先的必要条件。手动编写每一行代码不仅是一个可以避免的复杂的苦差事,也是一个浪费时间的事情。

值得庆幸的是,开发人员需要手动编写每一行代码的日子早已一去不复返了,这一切都要感谢自动化。自动完成工具对更快、更容易、更准确的编码至关重要,而且任何文本编辑器都有各种插件。本教程将教你如何使用任何语言的Vim代码完成工具。

什么是Vim?

Vi是第一个为Unix环境建立的文本编辑器。它是Vi编辑器的改进版,Vim这个名字代表了**V* **im**proved。Vim是一个免费的、开源的、跨平台的文本编辑器,可用于所有操作系统,于1991年向公众发布。它被设计为既可以从命令行也可以从GUI中使用。

VIM在Vim许可证下可用,该许可证 通过一个特殊的条款 与GNU通用公共许可证 兼容 ,该条款允许在 GNU GPL 2.0版 或更高版本 下分发修改过的副本 。

Vim文本编辑器的主要功能

Vim默认支持多种文本编辑功能。一些流行的功能包括文本自动完成,语法高亮,和使用命令的文本编辑。Vim还支持多种文件格式和编程语言,如Javascript、HTML和Python。因此,开发人员可以使用Vim编辑器在不同的文件中编写程序,如.js.html 文件。在使用vim编辑器编写程序时语法高亮功能开箱即用,并根据选定的文件类型高亮显示关键词。

Vim编辑器有六个主要模式,其他六个模式是主要模式的变种。Vim编辑器的页脚显示了你当前所处的模式的标签。主要的模式有

  • 正常模式 这允许你输入所有的编辑器命令。这个模式是你进入编辑器时的默认模式。
  • 视觉模式 这与正常模式类似,但移动命令会延伸到高亮区域。
  • 选择模式 该模式与MS windows的选择模式相同。当你输入一个可打印的字符时,它会删除选定的文本并进入*插入*模式。
  • 插入模式 允许你输入文字,并将输入的文字添加到缓冲区中。
  • 命令行模式 允许你在文本编辑器窗口的底部输入一行文本。它用于在Vim编辑器上执行命令。你可以通过按Esc键进入命令行模式。命令的例子有保存文件命令、退出编辑器命令等。

如何使用Vim的内置自动完成工具

Vim编辑器默认支持标准文本文件的自动完成,并通过显式配置启用程序化文件的自动完成。

普通文本文件的自动完成

首先,我们来看看如何在标准文本文件中使用自动完成功能。

默认的自动完成功能通过检查缓冲区中的可用术语来完成你输入的单词。要使用这个功能,在文件中键入一些词语。接下来,键入几个你需要写的词的字符,然后按Ctrl + N ,自动完成这个词。如果Vim发现只有一个匹配,它就会自动完成这个词。

如果Vim找到更多与输入的类似文字相匹配的词,就会出现词的列表。你可以选择你喜欢的术语,如下图所示。

如果没有找到类似的匹配来完成这个词,你会看到一个错误 "没有找到模式",如下图所示。

我们已经看到如何使用文本文件的自动完成功能。现在,让我们来看看如何启用和利用特定编程语言的自动完成功能。

程序文件中的自动完成功能

本节将教你如何启用JavaScript文件的自动完成功能。

JavaScript程序通常写在.js 文件中。

首先,用下面的命令创建一个.js文件。

</span> <span style="font-weight: 400;">$vim sample.js </span> <span style="font-weight: 400;">

一个js文件将被创建并以正常模式打开。

按*Esc*键进入vim命令模式,并输入以下命令。

</span> <span style="font-weight: 400;">:set omnifunc=javascriptcomplete#CompleteJS</span> <span style="font-weight: 400;">

现在按*Enter*键。Javascript的自动完成功能已经启用。

注意 自动完成只在当前会话中设置。如果你想使自动完成成为永久性的,你可以在你的.vimrc 文件中加入这个命令。

现在按i ,进入*编辑*模式,在文本编辑器中输入任何JavaScript关键词,然后按*Ctrl + x*,再按*Ctrl + o*。Vim编辑器将显示可能的自动完成建议。

例如,输入关键词document. ,然后按*Ctrl + x*,再按*Ctrl + o*,就会看到如下的自动完成建议。

这就是如何**启用和使用Vim编辑器的自动完成功能来编写Javascript**程序。每次打开Vim编辑器,都要花些功夫来启用自动完成功能。另外,自动完成功能在每个会话中只对一种语言起作用。你将在下一节中学习如何克服这些障碍。

适用于任何语言的Vim完成引擎

Vim也是高度可定制和可扩展的。你可以通过使用.vimrc 文件设置配置来定制Vim编辑器。你还可以通过使用 市场上 大量的插件 来扩展Vim的功能 。

多个插件可用于一次启用所有语言的自动完成功能。在使用高级插件时,建议是基于上下文的,而不是标准化的。让我们来发现一些可用的自动完成引擎插件。

YouCompleteMe

YouCompleteme是一个快速而全面的代码完成和重构引擎,可用于Vim编辑器。它有多个内置的完成引擎,开发者可以将其用于任何语言,而不需要任何特定的语言配置。你可以在这里找到YouCompleteMe插件 中可用的引擎列表。

当你使用YouCompleteMe插件时,不需要按任何键来自动完成代码。当你在编辑器中输入东西时,建议就会出现。如果你认为建议是有效的,你可以按*Tab*来接受建议。

由于YouCompleteMe中使用了基于标识符的引擎,自动完成建议是基于你正在处理的文件类型。它收集了你当前工作的文件和你访问的其他文件中的所有标识符,以确定适当的建议。

YouCompleteMe是一个基于Python的插件。另外,Ubuntu最新LTS版本中的Vim编辑器也支持YouCompleteMe。最新的LTS版本是Ubuntu 20.04,其中包含vim-noxv8.1.2269 。这个Vim版本必须在你的系统中安装Python 3.6版的运行时间。

要安装该插件,请阅读以下 说明

Deoplete.nvim

Deoplete.nvim是又一个可用于neovim和Vim 8编辑器的自动补全引擎。但 neovim是这个插件的推荐vim编辑器。你可以查看这篇文章 来了解neovim和vim编辑器的区别。

Deoplete.nvim插件是基于Python3的。为vim编辑器提供了一个异步的和可扩展的完成框架。Deoplete.nvim插件的主要优点是它具有高度可配置性。 另外,你需要安装各种源,用于不同编程语言的自动完成。你可以在这里找到可用的源列表 。

由于这个插件有更多的设置和对每种编程语言的不同配置,你应该**只在你想明确配置每一个设置时才使用这个插件。**否则,最好使用YouCompleteMe插件进行自动补全。

你需要在你的系统中安装Python3来安装和使用Deoplete.nvim插件。要安装该插件,请阅读以下[说明

注意,这个插件目前处于维护模式,不再开发。Ddc.vim 是Deoplete.nvim插件的下一代版本。

Coc.nvim

*Coc.nvim*是另一个可用于Vim编辑器的自动补全插件。**这个插件是基于node.js的。它是一个快速和即时的增量完成引擎。它使用一个jsonc ,作为类似于VS代码的配置文件,使其成为一个非常灵活的配置插件。**通过这种类型的配置,你可以使Vim编辑器类似于VS代码,作为你的开发活动的一个综合IDE。

当你喜欢用nodejs 环境工作时,你可以使用这个插件。你需要 在你的系统中安装 nodejs 来使用Coc.nvim插件。要安装该插件,请阅读以下 说明

利用代码补全技术提高生产力

你已经学会了如何在Vim编辑器中安装和使用自动完成插件。使用复杂的插件,如YouCompleteMe,可以使开发人员的工作更加直接,因为它可以预测他们需要输入的代码。 Tabnine 是一个全面的代码完成解决方案,可以插入本文提到的引擎。它支持17个IDE上的所有语言,可以为你写30%甚至更多的代码,解放你的时间,确保你生产出一流的软件。最重要的是:它是100%免费的。

The postHow to Select Vim Code Completion for Any Languageappeared first onThe Official Tabnine Blog.