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

标签 java scala autocomplete sublimetext3

我一直在尝试在 Sublime Text 3 中找到用于开发 scala/java 代码的 codeInt 插件,但没有成功,我不明白为什么会这样。

似乎有一组很好的插件可用于辅助功能,例如 sbt , ensime (这太粗糙了,我仍在尝试设置它)对于 scala 和像 javatar 这样的插件 适用于 java,但与 IDE 的定义功能之一(智能代码辅助)无关。

相反,对于 Python、PHP 和 JavaScript 等语言,这些插件是 already available 而且非常丰富,可以帮助您忘记像 Eclipse、IntelliJ 等更笨重的 IDE。

<小时/>

我的问题本质上可以归结为:是否有合理的根本原因(由于 codeInt 导致开销增加?复杂性?有人不愿意开发这个插件?没有想法!)像 Java 和 Scala 这样的语言被排除在外,还是 Sublime Text 只是为了成为(或一直)脚本友好的 IDE?

最佳答案

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

Sublime 的“代码智能”插件基本上可以归结为移动解释器,可以评估当前代码并为您提供功能建议等。它们扫描已经导入的模块/库/您拥有的内容并提供这些在适当的时间启动,以及无需导入即可标配的内置功能。它们跟踪变量的类型,给人一种“智能”的感觉。

但是,正如任何经验丰富的用户都会告诉您的那样,Sublime 不是 IDE。它无法进行真正的重构。调试非常困难甚至不可能,具体取决于语言。它不能自动导入。

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

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

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

关于java - Sublime Text Java-Scala 代码智能/自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32662155/

相关文章:

java.lang.NoClassDefFoundError : HttpServletRequest 错误

java - 为什么 Jeromq 的 .term() 会无限阻塞,即使我调用了 .close() 来关闭所有套接字?

scala - 如何将 Map[A,Future[B]] 转换为 Future[Map[A,B]]?

json - 如何为 Map[Int, Long] 编写 Json 读取组合器

autocomplete - 如何在VSCode中禁用自动关闭JSX标签?

java - 为什么在这个例子中 Gradle 编译失败?

Java:点击按钮后JPanel无法接收按键事件(没有注册的事件监听器)?

scala - SBT:访问子项目的托管资源?

javascript - 自定义自动完成箭头控件

php - 如何在 Adob​​e-Brackets 中打开 PHP 自动完成