TabNine——让你的编码速度更上一层楼
深度学习来帮忙啦!👨💻👩💻
TabNine是什么?
它是如何运作的?
安装
示例
深度学习来帮忙啦!👨💻👩💻
在本文中,我将讨论TabNine,这是一个适用于所有语言的 AI 代码补全系统,重点是 JavaScript。
TabNine是什么?
TabNine通过一些神奇的技巧帮助开发者编写代码。它基于深度学习系统,旨在帮助您编写代码:
- 快点
- 更轻松
- 清洁工
这是一个免费(没错,免费)的插件,适用于主流的IDE,例如:
- IntelliJ PyCharm
- VS Code
- 升华
- IntelliJ PhpStorm
- 维姆
- 原子
以及其他许多人:
它是如何运作的?
TabNine 会对您的代码进行索引,并查找统计模式,从而根据您编写代码的方式创建个性化建议。
举例来说:
如图所示,TabNine 会在我编写代码时自动学习我的变量声明模式,并为我接下来要编写的代码推荐最佳匹配的声明方式。这样,如果您使用定义良好的命名约定,就可以加快变量声明的速度。
TabNine 在写作过程中提供不同的解决方案,并根据找到的最佳匹配结果显示百分比值:
这是一个简单的示例,展示了 TabNine 如何帮助您编写代码,接下来的示例将展示这款神奇工具更复杂、更常见的用例!
注:本文使用 Markdown 编写,TabNine 帮助我完成了写作!真是太棒了!😎
安装
TabNine 是一个 IDE 插件,因此安装过程取决于您使用的 IDE。我将展示一些最常用 IDE 的安装过程:
Visual Studio Code
- 按CTRL + P打开命令提示符。
- 运行以下命令:
ext install TabNine.tabnine-vscode
- 手动或通过安装后提示重新加载 VS Code。
IntelliJ Idea
- 按CTRL + Alt + S打开设置弹出窗口
- 前往“插件/市场”
- 搜索TabNine并安装
- 手动重新加载IDE
原子
- 在软件包管理器中,您可以直接搜索并安装TabNine。
您可以在这里查看其他IDE的安装过程。
示例
让我们深入探讨一下如何使用 TabNine 以及为什么要使用它。我可以举很多例子,但我会重点介绍一些具体的使用场景。
示例 1. 注释驱动的代码补全
借助 TabNine,我们可以使用jsdoc动态生成函数和复杂对象。这在先定义接口再定义实现时非常有用。
以这个例子为例,我们要定义一个求和函数:
/**
* @description return a sum between a and b
* @name sumBy
* @param {number} a
* @param {number} b
* @return {number} the sum between a and b
*/
TabNine会读取 jsdoc 参数并建议正确的代码定义。
我只需按下 Alt + 空格键(或 Tab 键)即可编写函数:
课程开发与扩展
您也可以将此工具用于类定义。例如:
/**
* @description Animal class
*/
class Animal {
/**
* @constructor
* @param {string} name - name of the animal
* @param {boolean} quadruped
*/
constructor(name, quadruped) {
this.name = name;
this.quadruped = quadruped;
}
/**
* @description returns the name of the animal
* @returns {string} - name of the animal
*/
get name() {
return this.name;
}
/**
* @description sets the name of the animal
* @param {string} name - name of the animal
*/
set name(name) {
this.name = name;
}
}
我们希望在这个基础类中添加一个 Cat 类,TabNine 将学习Animal类,并提出方法实现建议和注释:
示例 2. 函数参数自动补全
在 JavaScript 中,如果没有类型定义,通常很难完成函数参数的赋值。TabNine 在这方面很有用,因为它能够学习你的代码并给出方法实现的建议:
TabNine 会自动显示sumBy和diffBy方法的参数,因此您不必直接查看方法实现来查看方法接受哪些类型的参数。
TabNine 和 Typescript
TabNine 在 JavaScript 和 TypeScript 之间的行为差异并不大。由于类型定义 (Typings) 的存在,TabNine 会提供更精确的代码建议,因此您可以充分利用类型定义为代码带来的所有优势:
如您所见,我定义的param1、param2和param3 的顺序和类型与foo函数中的定义不同。TabNine
能够识别变量类型,并为您推荐正确的顺序。
由于:
- 感谢Codota让我有机会撰写这篇文章,并参与到他们这个了不起的项目中。
- clideo.com,一款超棒的在线视频编辑工具(你还可以用它制作表情包😎)
- onlineconverter.com,可将视频转换为 GIF,以及更多功能!




