我最近参加了一个用户组会议,其中IntelliJ代表正在演示版本13.
他演示了如何切换文件的代码完成视图.我不完全记得这个特定文件的文件扩展名是什么,可能是java.
这个概念是,如果文件是带有嵌入式javascript的html,那么他可以用快捷方式在html和javascript之间切换代码完成.如果他说将文件视为html,那么文件中的所有代码都被视为代码完成目的为html,反之亦然为javascript.
有人知道他可能用来启用语言切换的快捷方式吗?
听起来你可能指的是IntelliLang功能.IntelliJ IDEA可以识别文件中嵌入的其他语言.
一个简单的例子是一个包含CSS和JavaScript的HTML文件.
注意我在HTML标记内部时:
或者在HTML元素中:
代码完整显示HTML完成选项.但是,当我在style
属性中时,我得到CSS代码完成:
如果我在元素中,我也会获得CSS代码.因此,即使我在HTML文件中,由于我的位置,我看到CSS代码完成.
与JavaScript相同的情况.当我在元素内部调用代码完成时,即使我在HTML文件中,我也可以完成JavaScript.
任何时候IntelliJ IDEA都可以确定存在另一种嵌入式语言,它通过IntelliLang提供适当的语法突出显示,错误突出显示和代码完成.Java也是如此.请注意,IDEA知道我竞争的方法采用SQL语句,因此使用SQL突出显示突出显示String值,并提供SQL代码完成:
所以,即使我在.java文件中,我也可以完成SQL代码.原因是IntelliLang预先配置了解某些方法的嵌入式语言.您可以在文件>设置> [项目设置]>语言注入中修改它们或添加更多内容.
此外,您可以使用注释告诉IntelliJ IDEA(以及查看代码的开发人员)String必须在特定语言中有效.例如,我可以注释一个String字段,变量或参数,以指示它必须是有效的HTML:
请注意,我获得了HTML语法突出显示,HTML代码完成以及左侧装订线中的CSS颜色显示.如果我注释一个方法参数,那么每当我调用该方法时,我都会得到相应的语法高亮,代码完成和错误/警告突出显示:
该@Language
注释里面的annotations.jar
是被包含在redist
了IntelliJ IDEA的安装目录里面的目录.它也可以在maven中心使用,或者如果您使用注释而不附加注释,IDEA将提供将其作为库附加.
IntelliLang和@Language
注释支持大量语言.输入后只需在引号内使用代码完成@Language("")
即可查看列表.(内联搜索也在列表中工作.)最有用的一个是Regexp.例如,如果你有一个方法,希望传入的字符串是一个有效的正则表达式,那么注释它将给任何人调用它正则代码完成和错误突出显示,如果他们传入一个无效的正则表达式模式.即使是使用其他IDE的开发人员,它也可以作为一种文档形式.
至于快速更改代码完成语言的快捷方式,我唯一能想到的就是"注入语言"意图.如果我输入一个String值,并通过Alt+调出快速修复/意图菜单Enter,我可以选择注入一种语言:
如果我选择它,IntelliJ IDEA会问我想要使用哪种语言:
在做出选择之后,IntelliJ IDEA将为我提供所选语言的临时语言注入(包括代码完成).
它还为我提供了添加@Language
永久注入注释的选项.
据我所知(作为10年IntelliJ IDEA用户),这是切换代码完成语言类型的唯一方法.所以希望这就是你要找的东西.对我而言,IntelliLang是IntelliJ中最酷的功能之一.(它实际上是作为第三方插件开始的,然后JetBrains将其吸收到产品中.)