当前位置: 首页 > 开发知识 >

浅谈代码编辑器的自动补全功能的实现

作者:游戏app开发公司 阅读: 发布时间:2024-08-23 07:01

摘要:而其中关于编辑器的自动补全功能,可以说是最伟大的发明或者说是进步了,有了它,程序员们敲起代码来变得行云流水。...

我们都知道Visual Studio号称宇宙第一编辑器,JetBrains号称最好用的全家桶编辑器。那么他们究竟好在哪里?我想关于自动提示补全功能一定是它们一个不可或缺的亮点。

代码自动补全的快捷键__代码补全工具

都说程序员是懒惰的,为了节省编码时间,它们穷极了自身的智慧。什么代码复用,什么类库,什么轮子,都是为了满足用最少的时间,取得最大化的收益。而其中关于编辑器的自动补全功能,可以说是最伟大的发明或者说是进步了,有了它,程序员们敲起代码来变得行云流水。

基本想法

jquery我想稍微老一点的前端程序员都应该接触过,在jquery中,有一个自动补全的插件jquery-autocomplete,它是怎么实现的呢?

使用这个插件的时候,我们需要给出候选匹配词,也就是我们搜索的时候,需要检索候选匹配词,如果检索到了,就把它显示出来,这里主要是通过js的字符串查找匹配功能。

那么我们的编辑器自动提示完成功能,我们似乎也可以借鉴这样的方式。我们可以先把可能匹配的单词或者语句保存起来当做候选词,当我们敲击键盘的时候,只要匹配到相应的单词组就下拉列出来。这确实是早期的想法,但是随着源码的增大,这样的匹配相关度非常差,经常匹配不到我们最想要的关键词,所以我们需要更好的方式来解决这个最佳匹配问题。

ctags

代码自动补全的快捷键_代码补全工具_

如果你使用过vim,那么你一定使用过这个插件,它是通过对源代码扫描,然后生成一个文件数据库。这个文件数据库包含了如下内容:关键字,关键字所在的位置,其他附属信息(函数,类,变量之类的)。编辑器通过分析分析这个文件数据库,提取符合条件的关键字(根据附属信息或者关键字匹配),并显示出来,这就是vim的自动补全基本原理。

编译原理

代码自动补全的快捷键__代码补全工具

然而只有ctags还远远不够,人们希望自动补全可以更加智能,于是我们就不得不提到编译原理。我们都知道我们的程序是要经过一些列步骤才能转化成计算机能够识别的机器码。而这些步骤中,编译可以说最核心的步骤。编译需要经过词法分析,语法分析,语义分析才能最后生成中间码。这里的面的词法分析,语法分析就是我们自动补全的核心原理。

代码补全工具__代码自动补全的快捷键

线程

我们都知道如果我们的界面操作和后台运算操作放到一起的话,一定会卡顿。所以我们引入了线程,让前端界面的展示和后台运算分开,这样我们的程序就不会被卡住,或者说变得卡顿。而编辑器的自动补全就是在后台多开一个线程进行词法和语法的分析,通过语法树的分析,我们就能够匹配出最佳适配补全。

总结

这里笔者只是对编辑器的自动补全做了基本的介绍,里面的详细原理可以说是非常的复杂,需要具备一些专业的计算机理论知识的人才能理解。

对于代码自动化,对于AI编码一直是人类不断追求的方向,人们一直期待可以出现能够自己智能编码的机器人出现,但这条路任重而道远,它需要几代甚至十几代人的不懈努力才能实现,而我们目前能做的就是不断地提升和优化我们的技术理论。

  • 原标题:浅谈代码编辑器的自动补全功能的实现

  • 本文由游戏app开发公司小编,整理排版发布,转载请注明出处。部分文章图片来源于网络,如有侵权,请与迪集网络联系删除。
  • 微信二维码

    CLWL6868

    长按复制微信号,添加好友

    微信联系

    在线咨询

    点击这里给我发消息QQ客服专员

    点击这里给我发消息电话客服专员

    在线咨询

    免费通话


    24h咨询☎️:132-5572-7217


    🔺🔺 24小时客服热线电话 🔺🔺

    免费通话
    返回顶部