在 Sublime Text 下获得完整的 JS 自动补全
Posted
技术标签:
【中文标题】在 Sublime Text 下获得完整的 JS 自动补全【英文标题】:Getting full JS autocompletion under Sublime Text 【发布时间】:2012-11-19 15:11:04 【问题描述】:我刚刚在 Windows Vista 下安装了 Sublime Text,即使按照this post 中给出的建议,即显式设置View > Syntax > javascript > JavaScript
,我也只能看到基于我之前输入的建议。我什至安装了SublimeCodeIntel plug-in,但无济于事。
据我了解,当我编写“pars”时,我应该得到“parseFloat”和“parseInt”选项,就像在 Chrome 开发者工具中一样,对吧?
谢谢!
【问题讨论】:
2015 年:情况没有改善。没有什么是开箱即用的。 8 岁的编辑具有更好的自动完成功能。 在下面查看我的答案,@MuhammadUmer。到目前为止它有效;开箱即用..很漂亮。 @SteveMeisner - 你的答案在这里讨论meta.***.com/q/341163/73226 我的回答大多是“仅链接”,但它被势利了。但这是我为 JS 智能感知/自动补全准备的出色软件包:github.com/pichillilorenzo/JavaScript-Completions 以防万一像我这样的人处理这个问题。这就是我切换到 VS Code 的原因。它有这个很棒的 Intellisense 功能,可以很好地跨 JS 模块自动完成。到目前为止享受它。 【参考方案1】:建议(基本上)基于当前打开文件中的文本以及您定义的任何 sn-ps 或完成 (ref)。如果您需要更多文字建议,我建议您:
Adding your own snippets for commonly used operations。 Adding your own completions for common words。 Adding other people's snippets 到 Package Control。 你可以找到even more snippets on github。 使用Zen coding(可通过Package Control获得)或Emmet。 还有各种包可以调整代码完成的工作方式。我喜欢SublimeCodeIntel,但请查看此问题的其他答案以获取更多选项。作为旁注,我真的建议 installing Package control 充分利用 Sublime 社区。上面的一些选项使用包控制。我还强烈推荐the tutsplus Sublime tutorial videos,其中包含有关在使用 Sublime 时提高效率的各种信息。
【讨论】:
基于出色的 Emmet 工具包被赞成和接受!这是令人兴奋的。它对 JS 的了解不如 Chrome 网络检查器那么多,但我想这并不是一件坏事。 (毕竟,我想增强我的肌肉记忆力。)另一方面,Emmet 为您所做的工作令人惊叹!谢谢! 很高兴它有帮助。我希望你最终能看完整个教程序列;里面有很多好东西。 但它不是免费的:/也许它更早。 我觉得那是 tutsplus 网站的广告。也许它最初不是,但我宁愿看到链接的答案不在付费墙后面。 嘿,是的,我看的时候这些都是免费的。更新答案以注意这些都在付费墙后面。【参考方案2】:三种方法
使用 SublimeCodeIntel 插件
使用 CTags 插件
手动生成 .sublime-completion 文件
这篇博文(我的)详细描述了这些方法:http://opensourcehacker.com/2013/03/04/javascript-autocompletions-and-having-one-for-sublime-text-2/
【讨论】:
好方法,和我的很不一样。【参考方案3】:检查 sn-ps 是否具有以特殊字符开头的 <tabTrigger>
属性。如果这样做,它们将不会出现在自动完成框中。这是当前 Windows 上可用的 jQuery 插件的一个问题。
更多详情请查看我的answer on this thread。
【讨论】:
【参考方案4】:Ternjs 是获取 JS 自动补全的新选择。 http://ternjs.net/
Sublime 插件
Sublime Text 中维护得最好的 Tern 插件叫做 'tern_for_sublime'
还有一个名为'TernJS' 的旧插件。它没有维护,并且包含几个与性能相关的错误,这些错误会导致 Sublime Text 崩溃,因此请避免。
【讨论】:
ST3 崩溃。项目未维护。 我没遇到过,你用的是哪个包?我正在使用github.com/marijnh/tern_for_sublime 我建议使用 我在答案中提供的链接 和我的评论中的那个。它仍在维护中。 我真的不认为这是“咸”,但我确实想指出您的评论是不正确的,因为我链接到的插件没有得到维护。因为它在 github 上有最近的更新。 我已经更新了评论,希望能少/不咸:/在阅读这些 cmets 时,希望人们不会被“引导”,而是朝着正确的方向前进。【参考方案5】:如前所述,tern.js 是一个新的且很有前途的项目,其中包含用于 Sublime Text、Vim 和 Emacs 的插件。我已经使用TernJS for Sublime 有一段时间了,我得到的建议比标准的要好得多:
Tern 会扫描您项目中的所有 .js 文件。您可以通过在 .sublime-project 文件中添加“libs”来获得对 DOM、nodejs、jQuery 等的支持:
"ternjs":
"exclude": ["wordpress/**", "node_modules/**"],
"libs": ["browser", "jquery"],
"plugins":
"requirejs":
"baseURL": "./js"
【讨论】:
在最后一个示例中,我没有收到“src”建议 - 我刚刚安装 (Sublime Text 3) 并使用了您的项目设置。 是否支持 ES6 (ES2015) 样式的 javascript? 是的,tern.js 项目站点包含支持的 ES6 功能列表 对于它的价值,你说你使用“tern for sublime”但它链接到 ternJS 插件... Tern for Sublime -> packagecontrol.io/packages/tern_for_sublime TernJS -> packagecontrol.io/packages/TernJS跨度> 我很惊讶你得到了 selectedIndex 属性,因为 createTag 将返回一个 img HTTP 标记。另外, selectedIndex 属于 select HTTP 标记,而不属于 img 或其父元素。你会这么评论你是如何得到这两个建议的吗?我相信是因为您在其他文件中使用过它们,而不是因为 JsTern 有能力在运行时解决 createElement 调用。尽管如此,建议 selectedIndex 是没有意义的。【参考方案6】:我开发了一个名为 JavaScript Enhancements 的新插件,您可以在 Package Control 上找到它。它在后台使用Flow(来自 Facebook 的 JavaScript 静态类型检查器)。
此外,它还提供 智能 javascript 自动完成(与我的其他插件 JavaScript Completions 相比)、实时错误、代码重构以及许多关于创建、开发和管理 javascript 项目的功能。
查看Wiki 了解它提供的所有功能!
这个插件的介绍可以在这篇css-tricks.com文章中找到:Turn Sublime Text 3 into a JavaScript IDE
只是一些快速截图:
【讨论】:
嗨洛伦佐。我对你的项目很好奇,但我想知道在定制完成方面我有哪些选择。基本上我想有像docu
> document
, document.que
> document.querySelector
等等的建议,但从来没有一个完整的函数调用像arr.forEa
> arr.forEach((object,index,array) => /* newline */ );
这样的参数和多行,如果这有意义的话.我可以使用 Javascript 增强功能禁用它,而无需手动编辑所有完成文件吗?我现在已经禁用了所有的完成,因为我对我的结构有点着迷。【参考方案7】:
截至今天(2019 年 11 月),Microsoft 的 TypeScript 插件 可以满足 OP 的要求:https://packagecontrol.io/packages/TypeScript。
【讨论】:
以上是关于在 Sublime Text 下获得完整的 JS 自动补全的主要内容,如果未能解决你的问题,请参考以下文章
Win7环境下Sublime Text 3下安装NodeJS插件
怎么在Ubuntu环境下配置sublime text的C编译环境
sublime text 3 之安装插件HTML-CSS-JS Prettify&Sublime text 3 未显示 Package Control 的解决办法&Sublime的插件