在Sublime Text下获取完整的JS自动完成功能

102

我刚在Windows Vista系统下安装了Sublime Text,即使按照这篇帖子中的建议明确设置 View > Syntax > JavaScript > JavaScript,我只看到基于我先前键入内容的建议。我甚至安装了SublimeCodeIntel插件,但也没有效果。

据我理解,一旦我输入“pars”,我应该看到与Chrome开发者工具中类似的“parseFloat”和“parseInt”的选项,是吗?

谢谢!


8
2015年的情况没有改善,没有一款软件能够直接使用。即使是8年前的编辑器也有更好的自动补全功能。 - Muhammad Umer
看到我的回答,@MuhammadUmer。目前为止它运行良好,开箱即用,而且美观。 - Steve Meisner
1
@SteveMeisner - 你的答案在这里讨论:http://meta.stackoverflow.com/q/341163/73226 - Martin Smith
1
我曾用大部分都是“仅链接”的回答进行了回答,但它被忽视了。但这里有一个非常棒的软件包,用于JS智能感知/自动完成: https://github.com/pichillilorenzo/JavaScript-Completions - Steve Meisner
以防万一,如果有像我一样遇到这个问题的人。这就是我转向VS Code的原因。它拥有这个美妙的Intellisense功能,可以很好地跨JS模块获取自动完成。到目前为止,我很喜欢它。 - Sergiy Ostrovsky
显示剩余2条评论
7个回答

78

建议基本上是基于当前打开文件中的文本以及您定义的任何片段或完成(ref)的。如果您想要更多的文本建议,我建议:

作为附注,我真的强烈推荐安装软件包控制以充分利用Sublime社区。 上面的一些选项使用软件包控制。 我还强烈推荐tutsplus Sublime教程视频,其中包含有关改善使用Sublime效率的各种信息。

1
基于Emmet工具包的卓越表现,我点赞并接受了它!这真是令人惊叹。虽然它不像Chrome Web检查器那样懂JavaScript,但我觉得这也没什么不好。(毕竟,我想要增强我的肌肉记忆。)另一方面,Emmet为你完成的工作简直令人惊艳!谢谢! - ezequiel-garzon
2
很高兴能够帮到你。我希望你最终能够观看完整的教程序列;里面有很多好东西。 - dbn
1
但它不是免费的 :/ 也许以前是。 - Jeff P Chacko
3
我感觉那是一篇为tutsplus网站打广告的文章。也许最初不是这样,但我更愿意看到的是链接到免费内容,而不是在收费墙后面的答案。 - dcmbrown
呵呵,是的,当我看它们时,它们都是免费的。更新答案以指出这些内容现在已经付费了。 - dbn

67

Ternjs是获取JS自动完成的新选择。http://ternjs.net/

Sublime插件

用于Sublime Text的最受关注的Tern插件称为“tern_for_sublime”

还有一个旧的插件称为“TernJS”。该插件已不再维护,包含多个导致Sublime Text崩溃的性能问题,请避免使用。


2
崩溃ST3。项目未得到维护。 - Chords
1
我没有遇到过这种情况,你使用的是哪个软件包?我正在使用 https://github.com/marijnh/tern_for_sublime。 - subhaze
2
我建议使用我在答案和评论中提供的链接中的那个,它仍在维护中。 - subhaze
1
我并不认为那是“咸”的,但我确实想指出你的评论是错误的,因为我链接的插件在 GitHub 上有非常近期的更新。 - subhaze
1
我已经更新了评论,希望它不那么咸了 :/ 当阅读这些评论时,希望人们不会被“引导偏离”,而是走向正确的方向。 - subhaze
显示剩余3条评论

43

如前所述,tern.js 是一个新的有前途的项目,支持 Sublime Text、Vim 和 Emacs 插件。我已经使用 TernJS for Sublime 一段时间了,它所提供的建议比标准提示更好:

enter image description here

Tern 会扫描你项目中的所有 .js 文件。你可以在你的 .sublime-project 文件中添加“libs”以获取对 DOM、nodejs、jQuery 等的支持:

"ternjs": {
    "exclude": ["wordpress/**", "node_modules/**"],
    "libs": ["browser", "jquery"],
    "plugins": {
        "requirejs": {
            "baseURL": "./js"
        }
    }
}

在此输入图像描述


在最后一个例子中,我没有得到“src”建议 - 我刚刚安装了(Sublime Text 3)并使用了您的项目设置。 - Rune Jeppesen
2
有支持 ES6(ES2015)风格的 JavaScript 吗? - Dan Esparza
1
是的,tern.js 项目网站包含了支持的 ES6 特性列表。 - eosterberg
1
就此而言,你提到使用的是"Sublime的Tern",但链接指向的是ternJS插件... Sublime的Tern-> https://packagecontrol.io/packages/tern_for_sublime TernJS -> https://packagecontrol.io/packages/TernJS - subhaze
我很惊讶你能获取selectedIndex属性,因为createTag将返回一个img HTTP标签。此外,selectedIndex属于select HTTP标签,而不是img或其父元素。您能否友好地评论一下如何获得这两个建议?我认为这是因为您在其他文件中使用了它们,而不是因为JsTern有能力在运行时解析createElement调用。然而,建议selectedIndex毫无意义。 - Alex

9

好的方法,与我的非常不同。 - dbn

7
我开发了一个名为JavaScript Enhancements的新插件,你可以在Package Control上找到它。它在内部使用Flow(Facebook的javascript静态类型检查器)。
此外,它提供了智能javascript自动完成(与我的其他插件JavaScript Completions相比),实时错误代码重构以及许多关于创建、开发和管理javascript项目功能
请参阅Wiki以了解其提供的所有功能!
可以在这篇css-tricks.com文章中找到有关该插件的介绍:Turn Sublime Text 3 into a JavaScript IDE 以下是一些快速截图:


1
嗨Lorenzo。我对你的项目很感兴趣,但我想知道在自定义完成方面有哪些选项。基本上,我想要像docu > documentdocument.que > document.querySelector等建议,但从不像arr.forEa > arr.forEach((object,index,array) => { /* newline */ });那样带有参数和多行的完整函数调用,如果这有意义的话。我能否使用Javascript Enhancements禁用它,而无需手动编辑所有完成文件?我现在已经禁用了所有完成,因为我对我的结构有点过于执着。 - ViggoV

2

1

检查代码片段是否具有以特殊字符开头的<tabTrigger>属性。如果是,它们将不会出现在自动完成框中。这目前在Windows上使用可用的jQuery插件时是一个问题。

有关更多详细信息,请参见此线程上我的回答


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接