Sublime Text Java-Scala代码智能/自动完成



我一直试图找到codeInt插件开发scala/java代码在Sublime Text 3,我不明白为什么这是。

似乎有一组很好的插件可用于辅助函数,如 sbt ensime (这太粗糙了,我仍在尝试设置)用于scala和插件,如 javatar 用于java,但没有一个与ide的定义特性之一有关,即智能代码辅助。

相反,对于像Python, PHP和JavaScript这样的语言,这些插件已经可用并且非常丰富,可以帮助您忘记像Eclipse, IntelliJ等更笨重的ide。


我的问题本质上归结为:是否存在合法的潜在原因 (由于codeInt而增加开销?复杂性?有人不愿意开发这个插件?不知道!)让Java和Scala等语言被排除在外,或者Sublime Text只是为了成为(或一直是)一个脚本友好的IDE?

是的,关注脚本是有正当理由的。最重要的原因是由于脚本语言的性质:语句和代码块可以实时评估,变量的类型可以确定,适当的函数/方法/属性等呈现给用户。编译语言不一定提供这种能力,因为代码需要不断地重新编译才能运行和分析,而有些代码就是不适合静态分析。

基本上,Sublime的"代码智能"插件可以归结为移动解释器,可以评估当前代码并为函数提供建议等。它们扫描已经导入的模块/库/你拥有的东西,并在适当的时候提供它们,以及不需要导入的标准内置函数。它们跟踪变量的类型,给人一种"智能"的感觉。

然而,正如任何有经验的用户会告诉你的那样,Sublime 不是一个IDE。它不能做真正的重构。根据语言的不同,调试相当困难,甚至是不可能的。它不能自动导入。

Sublime的API在Python中公开,这解释了该语言的大量代码完成、检查和分析工具。Node.js可以通过Python运行,并照顾JavaScript社区。与Python一样,Ruby也是解释性的,并且有类似的工具,尽管没有那么多,可能是因为它不那么流行。PHP也是解释性的,虽然我不知道为什么有头脑正常的人会自愿使用这种语言做任何事情,但显然人们仍然在这样做,所以有一些工具。

JVM和CLR语言是完全不同的东西。市场上有很多针对它们的优秀ide,它们拥有嵌入式虚拟机(或者至少能够连接到各种虚拟机)和庞大的代码库,这些代码库试图(并且经常成功)为您提供太阳下的所有功能。因此,它们的大小从数百兆字节到千兆字节不等。最新的Sublime Build 3095 x64的.deb是~6.5 MB,而且我猜所有支持平台的安装程序都在10 MB以下。

Sublime被设计成一个快速可扩展的文本编辑器,而不是一个"满足所有人的一切"笨重的IDE。所有的配置文件、菜单定义、键和鼠标绑定等都在文本文件中,而不是花哨的图形菜单。除非你像我一样安装了太多的插件,否则启动时间是闪电般的快(甚至我的启动时间也不到一到三秒),而且它的响应速度非常快。它确实很擅长它所做的事情,虽然API允许人们编写插件来创建新功能,但它永远不会成为一个真正的IDE。我喜欢这样,但我又不用Java或c#编程。

最新更新