草庐IT

给你的Vim加上自动编程功能

chattech 2023-03-28 原文

Vim 是高度可定制、可扩展的编辑器。这对热爱折腾的程序员来说,绝对是一种乐趣,同时也是进一步提升开发效率的源泉。近期CodeGeeX举办的黑客松活动中,参赛选手Lance 提交了一款名叫Vim with CodeGeeX的作品,这款作品是基于CodeGeeX,全新打造了一个自己专属的Vim开发环境,使Vim具备了自动编程的能力。众多开发者看了之后,为其打上了“不可或缺的插件”这一标签。

CodeGeeX是中国版的Github Copilot,是完全开源开放的。目前主流的VSCode、Intellij 全家桶,也都支持/提供了 CodeGeeX Plugin,因此吸引了大量开发者的安装使用。这次黑客松活动中,很多开发者也像Lance同学一样,把CodeGeeX移植到自己熟悉的开发环境中,集成在自己的工作流里,成为一件称手的工具,实现高效编程。

下面我们详细介绍 Lance 的 Vim with CodeGeeX 作品

不可或缺的插件:Vim with CodeGeeX

Vim with CodeGeeX安装使用
安装依赖。本插件基于coc.nvim开发,首先要安装此依赖。coc.nvim安装步骤可参考其官方仓库:https://github.com/neoclide/coc.nvim
安装插件。将coc.nvim安装完成后,打开vim,输入:进入命令模式,在命令模式下输入命令行:CocInstall coc-codegeex,安装本插件。

启动命令后,自动开始下载流程并执行安装,显示如下界面则表示安装成功。

配置插件。要使用CodeGeeX提供的服务,要配置相关的密钥。在天启平台上https://tianqi.aminer.cn/open/ 注册账号并创建应用申请密钥。并在vim中使用:CocConfig命令添加密钥。

实践小技巧
当前插件提供了两种能力。一是代码自动生成,根据vim当前所打开文件的内容自动补充代码。

以写一个前n项和函数为例,开发者在编辑过程产生停顿时,插件会根据当前文件内容自动提示相关代码,开发者可通过方向键选择合适的候选内容,回车键确认输入。

二是代码翻译模式。首先需要在.vimrc文件中配置快捷键,如下所示:
vmap (coc-codegeex-translate-keymap),此快捷键可根据个人vim配置修改。

当开发者在visual mode下选择需要翻译的代码块,按ctrl l组合键触发代码翻译功能,并选择目标代码的语言,插件则新建buffer显示翻译之后的代码。

编辑器里升级智能编程体验
将CodeGeeX集成到Vim中,为Vim用户带来现代化的智能编程体验,提升编码效率。当前插件处于开发阶段,欢迎大家体验~

有新的需求或发现其中的bug,可在GitHub Issue中反馈。代码仓库地址:https://github.com/LanceZhu/coc-codegeex

让你的Vim更顺手,随时起飞

根据 Stack Overflow 的开发者调查:2015 年程序员中最流行的编辑器是 Notepad++,Vim 的使用比例是 15.2%;2019 年最流行的开发环境变成了 Visual Studio Code,而Vim 的使用比例还保持在了 25.4%。

CodeGeeX是基于AI帮助开发者提高编程效率的插件工具,通过你的注释帮你生成适合的代码,或者基于你前面的代码给出下一行的建议,以及在不同语言的代码间精准翻译,开发效率直接提升50%以上。

通过这次黑客松活动,很多CodeGeeX新的玩法在各位开发者的脑洞中诞生,不仅这次为Vim编辑器插上了自动编程这个翅膀,还有更多帮助开发者提高编程效率的功能和插件即将上线。

关注并参与CodeGeeX黑客松,拒绝 Ctrl + C/V 工程师,现在升级开始做“Tab 一下代码生成” 的工程师吧。

Tips:CodeGeeX 黑客松活动还在进行中,国内首个围绕「AI 代码生成」开展的黑客松赛事,欢迎更多开发者小伙伴一起参加。

本文由博客一文多发平台 OpenWrite 发布!

有关给你的Vim加上自动编程功能的更多相关文章

  1. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  2. ruby - 使用 Vim Rails,您可以创建一个新的迁移文件并一次性打开它吗? - 2

    使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta

  3. ruby - RuntimeError(自动加载常量 Apps 多线程时检测到循环依赖 - 2

    我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("

  4. ruby - 寻找通过阅读代码确定编程语言的ruby gem? - 2

    几个月前,我读了一篇关于ruby​​gem的博客文章,它可以通过阅读代码本身来确定编程语言。对于我的生活,我不记得博客或gem的名称。谷歌搜索“ruby编程语言猜测”及其变体也无济于事。有人碰巧知道相关gem的名称吗? 最佳答案 是这个吗:http://github.com/chrislo/sourceclassifier/tree/master 关于ruby-寻找通过阅读代码确定编程语言的rubygem?,我们在StackOverflow上找到一个类似的问题:

  5. ruby-on-rails - Cucumber 是否只是 rspec 的包装器以帮助将测试组织成功能? - 2

    只是想确保我理解了事情。据我目前收集到的信息,Cucumber只是一个“包装器”,或者是一种通过将事物分类为功能和步骤来组织测试的好方法,其中实际的单元测试处于步骤阶段。它允许您根据事物的工作方式组织您的测试。对吗? 最佳答案 有点。它是一种组织测试的方式,但不仅如此。它的行为就像最初的Rails集成测试一样,但更易于使用。这里最大的好处是您的session在整个Scenario中保持透明。关于Cucumber的另一件事是您(应该)从使用您的代码的浏览器或客户端的角度进行测试。如果您愿意,您可以使用步骤来构建对象和设置状态,但通常您

  6. ruby-on-rails - 从应用程序中自定义文件夹内的命名空间自动加载 - 2

    我们目前正在为ROR3.2开发自定义cms引擎。在这个过程中,我们希望成为我们的rails应用程序中的一等公民的几个类类型起源,这意味着它们应该驻留在应用程序的app文件夹下,它是插件。目前我们有以下类型:数据源数据类型查看我在app文件夹下创建了多个目录来保存这些:应用/数据源应用/数据类型应用/View更多类型将随之而来,我有点担心应用程序文件夹被这么多目录污染。因此,我想将它们移动到一个子目录/模块中,该子目录/模块包含cms定义的所有类型。所有类都应位于MyCms命名空间内,目录布局应如下所示:应用程序/my_cms/data_source应用程序/my_cms/data_ty

  7. 网络编程套接字 - 2

    网络编程套接字网络编程基础知识理解源`IP`地址和目的`IP`地址理解源MAC地址和目的MAC地址认识端口号理解端口号和进程ID理解源端口号和目的端口号认识`TCP`协议认识`UDP`协议网络字节序socket编程接口`sockaddr``UDP`网络程序服务器端代码逻辑:需要用到的接口服务器端代码`udp`客户端代码逻辑`udp`客户端代码`TCP`网络程序服务器代码逻辑多个版本服务器单进程版本多进程版本多线程版本线程池版本服务器端代码客户端代码逻辑客户端代码TCP协议通讯流程TCP协议的客户端/服务器程序流程三次握手(建立连接)数据传输四次挥手(断开连接)TCP和UDP对比网络编程基础知识

  8. ruby-on-rails - 有没有一种工具可以在编码时自动保存对文件的增量更改? - 2

    我最喜欢的Google文档功能之一是它会在我工作时不断自动保存我的文档版本。这意味着即使我在进行关键更改之前忘记在某个点进行保存,也很有可能会自动创建一个保存点。至少,我可以将文档恢复到错误更改之前的状态,并从该点继续工作。对于在MacOS(或UNIX)上运行的Ruby编码器,是否有具有等效功能的工具?例如,一个工具会每隔几分钟自动将Gitcheckin我的本地存储库以获取我正在处理的文件。也许我有点偏执,但这点小保险可以让我在日常工作中安心。 最佳答案 虚拟机有些人可能讨厌我对此的回应,但我在编码时经常使用VIM,它具有自动保存功

  9. ruby - 我正在学习编程并选择了 Ruby。我应该升级到 Ruby 1.9 吗? - 2

    我完全不是程序员,正在学习使用Ruby和Rails框架进行编程。我目前正在使用Ruby1.8.7和Rails3.0.3,但我想知道我是否应该升级到Ruby1.9,因为我真的没有任何升级的“遗留”成本。缺点是什么?我是否会遇到与普通gem的兼容性问题,或者甚至其他我不太了解甚至无法预料的问题? 最佳答案 你应该升级。不要坚持从1.8.7开始。如果您发现不支持1.9.2的gem,请避免使用它们(因为它们很可能不被维护)。如果您对gem是否兼容1.9.2有任何疑问,您可以在以下位置查看:http://www.railsplugins.or

  10. ruby - 从 Rakefile 打开 Vim? - 2

    我正在为个人笔记创建一个日志应用程序,并且在我的Rakefile中包含以下内容:task:newdoentry_name="Entries/#{Time.now.to_s.gsub(/[-\:]+/,'.').gsub(/.0500+/,'')}.md"`touch#{entry_name}``echo"#$(date)">>#{entry_name}`end我想包括的最后一部分是Vim文本编辑器的打开,但我不知道如何打开它,就像我直接从bash终端调用它一样。我试过:vim#{entry_name}但不幸的是,我认为它们都将其作为后台进程打开。我一直在引用“6WaystoRunShe

随机推荐