Vscode: [php]提供html intellisense

创建于 2015-11-25  ·  234评论  ·  资料来源: microsoft/vscode

在PHP文件中,没有自动完成的html标记,请添加。


编辑2018年9月13日@egamma :VS Code仅提供对PHP的基本支持,但市场上有强大的PHP扩展可用:

这些扩展应该提供此功能(实际上,Intelliephence已经支持它)。 请尝试扩展这些扩展,并通过提交问题和请求来使它们更好。

这个问题失去了焦点,变成了VS Code是否应提供现成的PHP支持的讨论。 但是,与许多其他语言(如C#,C ++,Go,Python,Rust)一样,我们不想将PHP与VS Code捆绑在一起,而是依靠我们强大的扩展生态系统。 因此,我要解决此问题。

feature-request help wanted languages-basic php

最有用的评论

我无能为力,但我又需要+1000。 PHP中的HTML / CSS / JS通常作为混合文件使用。 我已经尝试了完整的Visual Studio + VS.php-也不受支持。 我一直想知道为什么在应该支持PHP的每个Microsoft开发工具中都忽略了这一点。 是的,那里有PHP支持,但是如果我们也没有针对HTML / CSS / JS的IntelliSense(代码完成和代码建议),它就没有用了。

HTML中的JS块和内联CSS也是如此。
如果我在settings.json中定义:
"files.associations": {"*.php": "html"},
...比PHP IntelliSense(显然)不起作用,并且HTML起作用了。但是在style属性的引号之间编写时,使用style=" ...something... ";内联CSS不提供任何CSS属性。
同样,如果我启动<script>块,则在打开.js文件时,其反应正常,您将不会获得JS的IntelliSense。

我支持以下建议(如果更简单):

  • <?php ... ?>应该启动PHP IntelliSense
  • <?php ... ?>应启动HTML IntelliSense
    但是也
  • <style> ... </style>style=" .... "应该启动CSS IntelliSense
  • <script ... ><script> ... </script>应启动JS IntelliSense

另外,如果可能的话,应该考虑@TheColorRed的建议,这意味着如果您在里面
<?php ... ?>但是正在编写一个字符串,例如$string="..." ,它应该考虑也应将HTML IntelliSense转换为字符串。 事实是,PHP开发人员经常使用以下内容:
<?php
$something="test";
echo "<div><a href="http://sample.com">This is a ".$something."</a></div>";
$continue = "coding here ... etc";
?>
..避免每次都使用打开/关闭php标签进行阻止,例如:
<?php
$something="test"; ?>
<div>
<a href="http://sample.com">This is a <?php echo $something; ?></a>
</div>
<?php
$continue = "coding here ... etc";
?>

还有@egamma ,虽然我们并不是要听起来

我希望对此功能存在共识,并且当前没有它的PHP支持仅是大多数PHP开发人员的部分支持。

PS再说一次,不要听起来像批评家一样-到目前为止,我真的很喜欢VS Code,并且非常感谢为这个出色的项目做出贡献并继续做出贡献的每个人!

编辑:
是否仅将一个.ts文件包括/引用到另一工作中?
例如/languages/php/common/php.ts
包括:/languages/html/common/html.ts
包括:/languages/css/common/css.ts
包括:...

尽管标签/属性/函数名称可能有一些重叠,但目前我还没想到...对于IntelliSense,我认为这不是问题,因为每个图标都有不同的图标,在这种情况下,只有颜色编码会混乱...我还有其他东西吗?

所有234条评论

听起来很合理。 HTML标签intellisense提供程序位于此处,这可能只是将该模块连接到PHP代码的问题。 如果我还记得PHP如何正常工作,还要确保它们仅在<?php标记之外时可用。

@Tyriar<?php标记之外意味着什么? 在PHP文件中的<?php ?>标记之外时,它们是否可用?

<?php ?>外部是HTML,内部是PHP。 因此,HTML自动完成功能仅应在<?php ?>标记之外可用。

@Tyriar但是现在它们在.php文件的<?php ?>标记之外不可用,也许它们仅在.html文件中可用。

请快速添加此功能,我认为这是一项基本功能,谢谢。

@osjn感谢您通过评论帮助我们确定优先

也许只有我一个人,但是我认为,如果intellisense也可以在php字符串中使用,那将会很酷。

我也有反对意见。 请使用此功能。

几乎每个PHP开发人员都需要此功能才能选择VSCode作为其主要编辑器。

我们需要解决此问题,以便针对更多开发人员。

昨天,我试图解决这个问题,但是不幸的是,由于缺乏TypeScript技能,我无法帮助您解决这个问题。

我需要这个!

相同。 只需+1000

我无能为力,但我又需要+1000。 PHP中的HTML / CSS / JS通常作为混合文件使用。 我已经尝试了完整的Visual Studio + VS.php-也不受支持。 我一直想知道为什么在应该支持PHP的每个Microsoft开发工具中都忽略了这一点。 是的,那里有PHP支持,但是如果我们也没有针对HTML / CSS / JS的IntelliSense(代码完成和代码建议),它就没有用了。

HTML中的JS块和内联CSS也是如此。
如果我在settings.json中定义:
"files.associations": {"*.php": "html"},
...比PHP IntelliSense(显然)不起作用,并且HTML起作用了。但是在style属性的引号之间编写时,使用style=" ...something... ";内联CSS不提供任何CSS属性。
同样,如果我启动<script>块,则在打开.js文件时,其反应正常,您将不会获得JS的IntelliSense。

我支持以下建议(如果更简单):

  • <?php ... ?>应该启动PHP IntelliSense
  • <?php ... ?>应启动HTML IntelliSense
    但是也
  • <style> ... </style>style=" .... "应该启动CSS IntelliSense
  • <script ... ><script> ... </script>应启动JS IntelliSense

另外,如果可能的话,应该考虑@TheColorRed的建议,这意味着如果您在里面
<?php ... ?>但是正在编写一个字符串,例如$string="..." ,它应该考虑也应将HTML IntelliSense转换为字符串。 事实是,PHP开发人员经常使用以下内容:
<?php
$something="test";
echo "<div><a href="http://sample.com">This is a ".$something."</a></div>";
$continue = "coding here ... etc";
?>
..避免每次都使用打开/关闭php标签进行阻止,例如:
<?php
$something="test"; ?>
<div>
<a href="http://sample.com">This is a <?php echo $something; ?></a>
</div>
<?php
$continue = "coding here ... etc";
?>

还有@egamma ,虽然我们并不是要听起来

我希望对此功能存在共识,并且当前没有它的PHP支持仅是大多数PHP开发人员的部分支持。

PS再说一次,不要听起来像批评家一样-到目前为止,我真的很喜欢VS Code,并且非常感谢为这个出色的项目做出贡献并继续做出贡献的每个人!

编辑:
是否仅将一个.ts文件包括/引用到另一工作中?
例如/languages/php/common/php.ts
包括:/languages/html/common/html.ts
包括:/languages/css/common/css.ts
包括:...

尽管标签/属性/函数名称可能有一些重叠,但目前我还没想到...对于IntelliSense,我认为这不是问题,因为每个图标都有不同的图标,在这种情况下,只有颜色编码会混乱...我还有其他东西吗?

如果没有添加,那么我必须切换编辑器,现在我使用2个编辑器...

请使用PHP时如何停用HTML IntelliSense?

此选项是一场噩梦,因为由于无法自动创建XML / HTML标签,所以无法在变量中添加标签。

我不会将PHP代码与HTML混合使用,也永远不会出现此错误,请至少添加在PHP“模式”下将其停用的选项。

对于PHP,您应该尝试Crane intellisense https://marketplace.visualstudio.com/items?itemName=HvyIndustries.crane

@TheColorRed Crane Intellisense有问题。 它是迄今为止最受欢迎的VS Code PHP扩展,所以我想这就是大多数人报告的问题所在。

同样在这里,我们需要自动完成HTML中的CSS / JS。 否则,切换到摩纳哥不是真正的选择:-)

我刚刚尝试过vscode,但是缺少此功能只会阻止我使用此IDE。 请提供此功能,因为它是每个IDE都必须具备的功能。
在此先感谢您。

这是非常需要的。 将php代码放在html文件中或将html放在php文件中时,没有得到适当的智能感知,这真是令人讨厌。

我缺少的一个重要功能是它阻止我和同事将vsCode用作主编辑器。

没有这个非常普遍的功能,这对我来说是杀手。 虽然可惜...我真的,真的,真的很爱这个IDE。 如果再加上这个,我会很高兴。

@egamma在我花了不必要的时间尝试查找要修改的代码之后,我会马上提交PR,因为您决定是被动的,进取的和讽刺的,而不是为那些可能的人提供一点指导帮助。

@TechnikEmpire在我们从11月VS Code大型发行版中恢复过来的同时,请不要过多地阅读我在2015年12月发表的评论。 很抱歉,如果此评论成为讽刺的话。

Intellisense for PHP取得了一些良好的进步。 如果您想做出贡献,那么我建议考虑为@felixfbecker正在进行php-language-server项目做出贡献。 Felix还是php-debugger的作者。 这些是相关的存储库:

有关语言服务器方法和语言服务器协议的更多信息,请参见此处。

@egamma但是,PHP语言服务器可以通过任何方式“委托”到VS Code的HTML语言服务器吗? 似乎像https://github.com/Microsoft/vscode/issues/1751可能涵盖了这一点

@felixfbecker ,我们已经提取了HTML语言服务器,我们要研究的第一种情况是如何将其与CSS语言服务器集成,以便我们可以在CSS部分中提供Intellisense。 这与您在#1751中提到的第一种情况相对应,在#8928中也有要求。

这项工作没有在9月完成,现在计划在10月进行。

谢谢! HTML工作中的CSS支持计划于10月发布,JS aka <script>支持呢?

@egamma是否有任何更改或改进? 10月中旬过去了,所以只想重新检查一下。 到目前为止,由于这个问题,五个月后,我仍然没有使用VS Code作为我的主要编辑器,我敢肯定那里有数百名沉默的人。 我很高兴HTML / CSS混合有一些工作,但是我们确实确实需要完整的HTML + CSS + JS + PHP支持...

@luxzg按照十月份的计划开发了HTML + CSS,HTML + CSS + JS只是其中的一部分。 在此处关注我们的进度: https :

对于我来说,编辑某些功能的devops文件中的powershell内衬也有很大帮助。 当某个光标位于某些代码块中时,可能有人的扩展特别自动更改了语法?

FWIW PHP Intellisense的“ HTML Snippets”插件对我来说很好用。

@matthewringer插件不适用于我

对我来说,这也是一个问题。.还没有动静吗?

希望很快会添加。 没有这个,我怀疑任何php开发人员都会使用它。

Sublime让我发痒,无法还原(TM)。 VSCode如果您爱我,那么请保存我的灵魂,然后添加HTML CSS&JS支持。

一年多了,仍然没有对此的支持吗? 真? ...在这里,我认为MS最终生产出的产品不是垃圾。

对我而言,这仅仅是一个功能,它使PHPStorm变得比我尝试过的任何其他功能都好得多。 如果他们最终可以通过HTML,CSS,Javascript实现对PHP的适当的智能/语法突出显示支持,那么我们最终可以拥有一个非常不错的轻量级PHP编辑器。

立即输入HTML或CSS或Javascript并在任何地方获得PHP补全都是一种烦人的方法。 您可能还使用了没有自动完成功能的其他编辑器。

仅仅将.php文件归类为HTML,然后仅将<?php ?>标签内的内容解析为PHP代码,不是很难吗?

向我+1,请把它们混在一起:)

我刚刚在学习编程时就开始使用VScode,它非常棒-喜欢速度,修饰和可用性-神奇的东西。 直到今天,它才意识到并没有在PHP文件中拾取HTML(无论有无PHP标签),这使得匹配HTML标签变得非常困难。 我不得不切换到另一个不理想的编辑器。

抱歉,我没有足够的经验来远程尝试自己添加/修复此问题,但是如果Microsoft的某人可以添加它,我将不胜感激。我通常将HTML,Javascript,CSS和SQL代码嵌入到我的PHP文件中。 如果可以像在其他编辑器中一样将其全部检测到,那将是很棒的,尽管我确信添加此功能并非易事。 真的很讨厌不得不将VScode放在一起,因为这会使学习体验变得愉快。

@egamma @aeschli已经存在了很长一段时间-您提到您想使用HTML和CSS语言服务器解决此问题,这样就完成了吗? 我认为这归结为语言服务器能够在文档中定义某些范围的能力,在该范围内所有语言功能应由不同的语言服务器处理。 因此,PHP LS可以在解析文档后声明哪些范围是HTML,HTML LS可以声明哪些部分是JS或CSS,TS / JS LS可以声明哪些部分是SQL或GraphQL。

@felixfbecker是,因为有几个里程碑,

image

可以在这里https://github.com/Microsoft/vscode-html-languageservice找到html语言服务器

该方法已被vue语言支持所模仿https://github.com/octref/vetur

// fyi @aeschli

@egamma那么如何将

离开这里

@felixfbecker对不起,我们目前除代码外没有其他文档。 如果您要开始添加对php的支持,我建议您与@aeschli进行深入探讨。

@felixfbecker

似乎还没有通用的方法可以进行语言注入,但是html扩展的实现非常简单。

我认为现在达到了一个很好的中间立场:VSCode提供了html / css LS软件包来减轻对嵌入式语言支持的实施。 同时,它保持灵活性,因此每个LS可以根据其上下文做出不同的反应。

通过上下文,我的意思是,当包含带有jquery的脚本标签时html扩展名可以下载jquery.d.ts(不适用于vue),或者vue扩展名将每个.vue文件标记为组件来进行模块解析(不会适用于html)。

引用@aeschlihttps :

有一些错误希望我们为嵌入式内容提供一个通用的解决方案,但我认为我们不会成功。 在每种情况下都有细微的差异,我们认为最好对每种宿主语言进行特定实现以获得最佳用户体验。

但是我确实同意缺少用于实现嵌入式语言支持的文档。 猜猜一旦我完成了vue扩展的所有主要功能,我就会写一些文章。

这是非常不幸的。 我们不能将此功能添加到LSP吗? 语言服务器是将文档解析为AST的语言,因此只有语言服务器才知道文档的哪一部分用其他语言编写,应该移交给其他人。 那么现在扩展名_also_需要解析文档吗? 在大多数情况下,这甚至是不可能的,因为解析器依赖于与Node(PHP,Java等)不同的运行时。

我不认为将其添加到LSP会如此困难,例如服务器可以只发送带有范围+语言模式数组的URI通知。 在该范围内,比任何编辑器(不仅仅是VS Code)都可以使用其他语言服务器。

@egamma我在存储库中找不到

@felixfbecker Erich的意思是:不同语言服务的嵌入是在
您可以例如在html服务器的依赖项中看到它。
这样,服务器是独立的,并且具有完全控制权来配置嵌入式语言的上下文(JavaScript库在嵌入式内容,语言的版本(ES5,ES6 ..)中可用)。

这就是您概述的解决方案(语言服务器之间的通信)开始遇到麻烦的地方。 这可能会导致特定于语言服务器的API以及服务器之间的依赖关系。
我们希望保持较低的耦合度,并且语言扩展是可替换的。

也就是说,每个语言服务器都可以自由选择其方法。 您可以使用自定义LS消息来执行此操作。 这就是我们在11月发行版中实施它的方式。 服务器将请求发回给客户端,客户端根据仅包含嵌入式语言内容的虚拟文档询问其他扩展名

我建议我们继续讨论是一个单独的问题。 也许用您对如何扩展LSP的建议提出新的问题?

也可以在这里鸣叫到目前为止,我很喜欢VS Code,但是PHP内缺乏HTML标记竞争确实是一个大问题。 我暂时将PHP文件切换为HTML语言模式,但不知道最终如何实现。

爱上了VSCode,直到我发现它缺少此相当基本的功能。 暂时回到崇高的状态。

这一功能使我无法切换到VSCode。

这是急需的功能。 +99999

所有其他编辑器中都存在这样的基本功能:|

取消关注

关于何时可以期待这一点的任何更新?

我认为这与#765直接相关。

:+1:很好的编辑器,它缺少这么简单的功能:(

我想如果还没有彻底解决这个问题,那么有一天可能会解决。 我当然希望如此-越早越好。

使我无法从Atom过渡到VSCode的唯一原因是缺少此关键功能:(

那么,谁能为全栈Web PHP / HTML / JS建议任何其他编辑器呢? 真的很喜欢VSCode,但是这种功能上的不足对我来说只是一个障碍。 PHPStorm或WebStorm好吗?

作为PHP IntelliSense的维护者,该线程是要订阅的噩梦。 如果您想对此问题+1,请给我一个赞。 所有这些+1注释只会使线程和垃圾邮件维护者的通知变得混乱,而不会增加讨论的价值。 对于每个人都说“这是一个简单的功能”:实际上并非如此。 但是,如果您这样认为,请随时进行PR。

@felixfbecker我确实认为这凸显了人们对这个问题感到沮丧。 这不是一个简单的功能; 我同意它的实现很复杂,但是人们越来越期望文本编辑器具有这种功能,而像我一样,在爱上VScode之后,它的缺失也让我非常震惊。

关于缺乏如此重要问题的路线图。 无论是否简单,这都是2017年开发环境所必需的功能。超级简单的解决方案是让我们用注释或其他关键字标记部分,以指定我们想要的智能。 GitHub代码块的内容,将一段文本包装在标签中。

虽然听到所有的抱怨有点烦人,但我一直是
听到这个问题很重要,听到它很重要。

开源是否无关紧要,您仍在从事
向消费者交付产品,当产品很烂时,人们将
抱怨。 当我的汽车经销商使用我的年度服务免费洗车时
而且最低工资的洗车器在我的车上留下条纹,我要去
抱怨。

是否免费,用户都有投资来修改他们的
新编辑器的工作流程。 人们这样做只是为了发现
他们浪费时间,不妨坚持使用记事本。 人们可以
退订是否不想听到负面反馈,但这是
Microsoft听到这些投诉很重要。 毕竟,他们已经
投入巨资生产该产品,它们是什么
找回他们的钱? 有更多理由诅咒他们的人
公司,而不使用他们购买的产品。

至于请求请求,人们已经很烦恼他们的时间
仅用于切换工作流程和工具的投资已被浪费。 有
很少甚至根本不了解在哪里开始增加时间
即使他们觉得有可能浪费更多时间,也要进行投资。 这个
不是纸上的复杂功能,所以如果在实践中
应用程序设计中存在严重缺陷。 我只能
像其他所有人一样推测,因为我们没有得到某人的报酬
学习此代码库。

2017年3月29日,星期三,9:37,Stephen Eckels通知@ github.com
写道:

关于缺乏如此重要问题的路线图。 简单与否
这是2017年开发环境所需的功能。超级简单的修复
让我们用注释或其他关键字标记部分以指定
我们想要哪种情报。 GitHub代码块之类的部分内容
标签中的文字。

-
您收到此邮件是因为有人提到您。
直接回复此电子邮件,在GitHub上查看
https://github.com/Microsoft/vscode/issues/670#issuecomment-290091896
或使线程静音
https://github.com/notifications/unsubscribe-auth/AKtty5-1B6H5kqCCq9mb8rva78_dR53Uks5rql6ZgaJpZM4Gpk-J

>

杰西·尼科尔森(Jesse Nicholson)

对我而言,所有此问题的答案是NETBEANS for PHP

我很长时间都不会改变的很棒的想法。

@ madruga88 Netbeans甚至不是最好的东西。 我相信PHPStorm是目前最好的PHP编辑器。 我相信Jetbrains从Microsoft那里获得了全部的Intelligent Coding Assist,并使它变得更好。

当我第一次开始使用VSCode时,它使我想起的唯一IDE是IntelliJ产品中的IDE,因为完成工作的显示速度如此之快。 实际上,就常规编辑功能而言,VSCode和PHPStorm都具有非常相似的即开即用的感觉。 VSCode唯一失败的地方(我的意思是真的很难)是在带有嵌入式HTML的PHP​​上(从一开始就应该起作用)。

如果VSCode最终使嵌入式HTML与PHP一起使用,它将很容易成为PHP的最佳文本编辑器(非IDE)。

目前,我坚持使用Sublime Text,因为它至少知道我是否使用HTML,CSS,Javascript或PHP都在同一个文件中,并且至少给出适当的补全。

有趣的是,当您有一个PHP文件将Sublime文本处理为纯HTML文件时,这才是有趣的事情。 VSCode是否也可以将PHP支持添加到HTML语法中吗? 不需要2种单独的语法吗?

@ drone540 phpstorm的不良加载和使用(甚至代码输入速度很慢)的性能也使我选择了netbeans ...,它具有所有的lint和提示工具,格式化和调试功能,开箱即用。

我已经使用Visual Studio十年了..我可以说netbeans是PHP的视觉工作室,因为它具有完整的功能和出色的性能。

我同意您的看法,vscode中唯一缺少的是html + php语法格式。

但是即使PHPSTORM是免费的..我也会选择netbeans ...因为它的性能。

严重的是,自2015年以来这还没有解决? 回到崇高

我会继续检查以查看此问题是否已解决,但没有任何动静。 不管它具有多少其他出色的功能,它都不会切换到VSCode。 非常需要。

我会继续检查以查看此问题是否已解决,但没有任何动静。 不管它具有多少其他出色的功能,它都不会切换到VSCode。 非常需要。

您现在正在使用什么IDE?

@icenold我的Brackets atm有一个非常漂亮的工作流程。 倾向于坚持。

不幸的是,尽管我喜欢Visual Studio Code,但由于这个问题,我不得不切换到Sublime。

还开着? 每个人都想要此功能!

请实施此功能。 我从开发者朋友那里听到了关于VS的很棒的事情。 我今天早上打算从崇高的角度进行切换,但是如果没有此功能,我真的无法通过。

各位,请耐心等待。

@markpanado原始门票日期:“ 2015年11月25日”

在等待的同时,有一种方法可以将HTML语法设置为PHP文件的默认语法,因为我通常用PHP编写的HTML比使用PHP编写的HTML要多得多。 用户设置面板中没有明显的内容。

谢谢!

@ matt3224单击状态栏左下角的语言指示器,然后在快速选择中选择“配置文件关联”

image

@egamma太好了! 谢谢

实际上,php旨在与HTML一起使用并使用html标签覆盖自身,就像HTML中的javascript / css一样。 其他语言则不能那样工作。 因此,.php文件中的HTML支持应该是内置功能。

虽然我喜欢VS Code的扩展,但这里提到的问题(考虑到该线程可以追溯到多久)是一个破坏交易的问题。 当然,没有它,您也可以完成工作,但是它感觉很慢,足够慢,您可以直接回到记事本,而无需任何语言工具。

不应该是这样

您好vscode PHP爱好者。 您可能对Intelephense的0.7.0版本

optimised

有一些怪异之处在于您必须处于HTML语言模式,并且php无法使用语法着色。 格式化(从gif中删除)是一个三步过程:格式化html->切换到php->格式化php。

希望大家都能很好地分离视图和模型,并且这些缺点不是太大的问题。

@bmewburn太神奇了! 什么时候可用?

@popcorner现在可用

我个人通过转到File-> Exit并下载Netbeans解决了此问题
w / web dev addon。 优越。 VS Code是一个不错的打字稿,并不是很多
其他。 当您不再期望从中获得更多收益时,您将不会感到失望。

2017年6月24日,星期六,下午5:02 Ben Mewburn [email protected]
写道:

@popcorner https://github.com/popcorner现在可用

-
您收到此邮件是因为有人提到您。
直接回复此电子邮件,在GitHub上查看
https://github.com/Microsoft/vscode/issues/670#issuecomment-310865635
或使线程静音
https://github.com/notifications/unsubscribe-auth/AKtty5j9FjPOsarF3tjW9qq2JugqnYjZks5sHXlggaJpZM4Gpk-J

>

杰西·尼科尔森(Jesse Nicholson)

@bmewburn我尝试了Intellephense,但是它仍然存在一些明显的问题。 在HTML标签属性内键入的PHP,例如(id =”)会丢失自动补全功能。PHP主题格式会丢失。

它需要在HTML和PHP之间来回转换,这只是浪费太多时间。

另一方面,我开始怀疑这整个线程是否只是一个大巨魔。 两年后怎么会仍然是一个问题? 每个甚至提出类似问题的人,都将其关闭并提及此问题。 然而,一直以来都没有取得进展。

我也转到Netbeans,发现PHPStorm能够完美地在一个文件中处理php html js。 通过SSH进行远程数据库集成也很方便。

因此,我对Netbeans和PHPStorm进行了一些测试。

看起来Netbeans在这方面相当不错。

网豆
它支持:

  • 外部的PHP文件中的HTML / CSS / JS标签
  • 具有样式属性的HTML标记中的CSS。
  • 拼写完成(不知道是否有用,但在那里)

它失败并显示:

  • 补全似乎不知道您键入的内容,因此第一个补全可能不是您想要的。
  • 不支持PHP字符串中的HTML。 实际上,这里的完成与VScode一样糟糕。

PHPStorm

  • 好吧,它在任何情况下都可以正常工作,并且效果非常好,所有补全都非常精确,是您真正想要的。

次要失败:

  • 似乎关闭自动完成功能的小问题-键为具有样式属性。 可以使用Ctrl +空格重新打开或继续输入CSS属性
  • 仅当存在HTML标记时才在PHP字符串中激活(无论如何,这确实足够好支持)

毫无疑问,PHPStorm感觉与VSCode更加接近(当它起作用时),然后是Netbeans。 如果您想测试自动完成功能应如何工作。 我建议在PHPStorm中对其进行测试。 此外,PHPStorm和VSCode还提供了许多类似的编辑功能。 在性能方面,我认为PHPStorm更快。 即使使用自动完成功能,也没有任何延迟。 Netbeans注意到自动完成功能有些滞后。

Dunno在VSCode实际解决此问题之前需要多长时间,但是我相信它何时才能真正起作用。 它的工作方式将与PHPStorm的工作方式更加接近,并且至少将成为有史以来PHP自动完成功能第二好的编辑器。

我刚从SublimeText切换到VSCode,只是遇到了这个问题。 这是一个非常烦人的问题,也是一个非常基本的问题。 因为这个原因,我必须回到SublimeText。 尝试将PHP与HTML关联,但这会使所有PHP代码变成白色,根本没有语法高亮显示。 可怕!

我以为10年后我将最终拥有一个永久安装在我的计算机上的Microsoft软件,但是如果他们不能在2年内解决一个简单的问题,它将再次成为垃圾。

在PHP文档中编写HTML会导致

screen shot 2017-07-28 at 1 32 51 pm

@ingageco不,不是。 它由@felixfbecker的PHP Intellisense扩展建议。 但他无能为力,因为扩展程序无法指定特殊的激活字符,因此可以避免提示。

我只想知道一件事。 是进行中(一点一点,婴儿的脚步)还是只是完全搁置了?

@bsienn关于什么? php intellisense扩展正在进行中,而代码团队不希望本机提供。

@ jens1o感谢您的回复。 那么, php intellisense extension是在谈论Fleix Baker扩展程序吗?
那么这个线程是多余的吗? 我现在很困惑。 我应该遵循他的插件存储库以取得进展吗?

是的,我说的是Felix的扩展名,是的,您应该按照他的资料库进行更新。

...所以2年后,对于在php文件中使用html自动补全功能仍然没有解决方案? 我真的很喜欢VS Code,我不想再回到Sublime了:-(

现在,我们只需要真正处理它

还是您不知道,因为那里还有其他选择。 仅Git和调试不会使我在工作流程中倒退。 如果某些选项可能无法很好地实施,但在其他方面却是适当的,则永远不要没有。 这个问题应该从一开始就解决。

主要的问题是我们不知道是谁提供的。 理想情况下是PHP扩展名( @felixfbecker ?)。 我也愿意增加对HTML语言服务器的支持。
所有HTML智能性也可以作为节点模块使用

@aeschli如上所述,在其他一些线程中,我认为不要求每个语言服务器为每种可能的嵌入式语言嵌入语言服务器是正确且可持续的方法。 PHP通常嵌入HTML和SQL。 HTML通常嵌入CSS和JS。 JS再次通常嵌入HTML。 语言服务器的作者将陷入困境,无法支持每种嵌套组合,并且最终用户将为相同的语言多次安装语言服务器,但不再控制要用于这些嵌入式语言的语言服务器,也无法控制其版本。 就像您在https://github.com/Microsoft/vscode/issues/670#issuecomment -282702369(强调我的)中说的那样:

这可能会导致特定于语言服务器的API以及服务器之间的依赖关系。
我们希望保持较低的耦合度,并且语言扩展是可替换的

我非常同意这一点,并且从我的观点来看,嵌入方法可以得出确切的结果,而不是我概述的解决方案:

  • 使语言服务器能够向_client_宣布哪些范围包含嵌入式语言。 例如,PHP语言服务器向VS Code报告内联HTML的范围为嵌入式HTML,HTML语言服务器向VS Code报告<style>标签的范围为嵌入式CSS, <script>标签的范围为嵌入式CSS。嵌入式JS。
  • 客户端(VS代码)激活嵌入式语言所需的语言服务器,并向它们发送带有虚拟URI和嵌入式范围内容的didOpen通知。
  • 每当用户请求嵌入语言范围内的自动补全功能时,请将该请求发送给语言服务器以获取嵌入语言(相对于嵌入范围起始位置的位置)
  • 显示结果,根据需要解析相对于嵌入范围起点的位置。

通过这种方法,用户可以完全控制要使用的语言服务器(它们是可替换的),并且各个服务器无需费心将其他语言服务器作为依赖项进行嵌入。 这意味着在嵌入式语言和顶级语言之间具有一致的体验,并为每种语言服务器维护SoC,使其仅关心一种语言。

该通知大致如下所示:

/** Parameters for textDocument/publishEmbeddedScripts, a notification sent from server to the client */
interface PublishEmbeddedScriptsParams extends TextDocumentIdentifier {
  /** All the embedded scripts for this text document */
  embeddedScripts: EmbeddedScript[]
}
interface EmbeddedScript {
  /** Ranges in the text document that form this continuous embedded script */
  ranges: Range[]
  /** The language ID for that script (as also used in MarkedString) */
  languageId: string
}

例:

给定这样的PHP文档:

<h1>Foo</h1>
<?php echo 'Hello' ?>
<p>Bar</p>

PHP langserver将发送到VS Code

{
  embeddedScripts: [{
    languageId: 'html',
    ranges: [
      { start: { line: 0, column: 0 }, end: { line: 0, column: 11 }}
      { start: { line: 2, column: 0 }, end: { line: 2, column: 9 }}
    ]
  }]
}

这将导致HTML langserver从VS Code接收到带有URI的textDocument/didOpen ,该URI类似于file:///foo.php#embedded1和以下内容:

<h1>Foo</h1>
<p>Bar</p>

如果您愿意,很高兴在另一期中对此进行讨论。

@aeschli我认为即使该问题仍然存在,该问题仍会继续作为语言服务器问题而出现,这表明我可能永远

@felixfbecker没有人说过要检测每一个格式化。 那将是疯狂的,但是在彼此内部可检测到的PHP / HTML的最低限度将是不错的。 VSCode与其他IDE相比,它使使用PHP / HTML变得不必要地困难

@felixfbecker

要使此文件生效,具体需要在语言服务器中编辑哪些文件? 我查看了HTML的语言服务器,但无法确切看到它对样式和脚本的作用。

根据这些文件,它似乎跳过了对不是HTML的内容进行标记的操作: https :
https://github.com/Microsoft/vscode-html-languageservice/blob/master/src/htmlLanguageService.ts

但是CSS和Javascript如何知道该怎么做? 根据该文件,我完全看不到它们如何工作。

鉴于许多vscode功能都允许注册多个提供程序,因此@aeschli的php和html语言服务器已经可以很好地协同工作。 在许多情况下,使用第一个非虚假提供者结果,或者在某些情况下,使用多个结果。 所以只要每个服务器忽略什么它不明白-之外<?php ?>的PHP,内部为HTML -它works.You可以在这里的行动看到这个https://github.com/Microsoft/vscode / issues / 670#issuecomment -310822851

使此工作更顺畅。

  1. 允许多个语言ID文件关联,以便每个lang服务器运行。
   "files.associations": {
        "*.myphp": ["php", "html"]
    }  
  1. 使用组合的php / html / css / js语法文件突出显示语法

是否有更完整的语言嵌入解决方案? 大概。 我同意嵌入任何多种语言都不是任何特定服务器的责任。 我认为确定使用哪种特定语言甚至不应该由服务器负责,用户应该确定文档范围。 除此之外,要使PHP和HTML协同工作,我认为这并不难。

@bmewburn如果不是那么困难,为什么我们要等2年后才能解决问题?
@felixfbecker说这并不容易。 但是这个问题仍然悬而未决,因此显然有人会认为这可能是一个优先事项,但每个版本都忽略了它。 因此,在有人进行更改之前,我会保持精力充沛,并希望它最终得到解决。 在那之前,我将继续使用有效的方法。

@felixfbecker正如我在评论中提到的,这里没有任何要求,每个语言服务器都可以自由选择如何处理嵌入式内容的方法:将请求转发到其他服务器,或者自己处理。 例如,使用链接的库/服务。 这完全取决于嵌入式内容和主要语言的紧密程度以及服务器想要提供的用户体验。 通常,嵌入内容需要主要语言的上下文,并且必须遵守转义规则。 很难将其传达给仅查看虚拟文档的语言服务器。 这就是为什么我们放弃HTML服务器中的这种方法的原因。
但是,如果这对于PHP是可行的,并且PHP语言服务器希望HTML服务器处理给定范围的请求,那么我们就可以做到这一点,所有这些API都可以在客户端使用自定义LS协议完成。
如果有什么我可以帮助html服务器或服务的,请告诉我。

@aeschli转义规则是一个好主意,因此语言服务器必须将未转义的内容发回,而不是范围。 那会解决吗? 或您在提案中看到其他任何问题?

但是,如果这对于PHP是可行的,并且PHP语言服务器希望HTML服务器处理给定范围的请求,那么我们就可以做到这一点,所有这些API都可以在客户端使用自定义LS协议完成。

除了VS Code,sublime,neovim,atomic-ide-php,Eclipse Che等之外,许多其他客户端还使用PHP语言服务器。我们如何构建可以期望(最终)在所有这些工具中工作的解决方案客户端(这就是LSP的意义),同时避免捆绑具有特定运行时要求的特定HTML(和CSS,JS ...)langserver(例如neovim PHP开发人员安装了PHP,但不一定安装NodeJS),因此用户可以决定将哪种语言服务器用于嵌入式语言? 如果能以一种通用的语言将其实现的话,我将感到非常兴奋,因为这对于LSP来说是一个非常有力的论据。

@aeschli @felixfbecker那么这是否意味着你们俩都将试图解决这个问题? 这将是惊人的。

几乎每个PHP程序员都确实需要此功能。 因此,请不要仅仅因为我们不能以_correct_方式制作它就忽略它。
即使有不合逻辑或丑陋的解决方案,它仍然可以暂时使用,而不是我们推迟它而不做任何事情。

如果因为我们希望与最初为另一个旧编辑器编写的扩展程序尽可能兼容而被束之高阁,那么也许我们应该考虑编写一个超越现在可用的新的交叉编辑器标准。 微软并不是没有像以前那样走出国门,并与其他组织一起建立了用于此编辑器和其他编辑器的标准语言服务器模型。 关于如何处理混合语言方案,我们只需要再次做同样的事情。

显然,混合语言扩展名(例如@felixfbecker的php-intellisense扩展名或我的vscode-jinja扩展名)已被此问题阻止。 如果您能够使用核心语言来做,那就太好了,但是,如果社区不能轻松地扩展它,那只会给整个编辑器带来糟糕的经验。 在这一点上,这个问题已经持续了很长时间,以至于社区本身实际上是在告诉其他人去其他地方,而我也在这样做。

@wholroyd同意,我向人们介绍了这个IDE,就像这是切成薄片以来最好的事情,现在我正在积极地引导人们远离它。 很遗憾,我已经将其集成为我的项目之一。

@aeschli您会在html语言服务器中考虑以下内容吗?

  1. 用于收听phtml的附加languageId。 这将提供php和html扩展名可以收听的共享ID,以及组合的textmate语法。
  2. 如有必要,请对html语言服务器扫描程序进行修改,以将<\?(php|=)?>\?>作为单个自闭标签使用。

以下来自不同php和html扩展名的提供程序可以很好地协同工作,而无需在服务器中嵌入任何内容或在客户端中进行入侵。

  • 编码镜
  • 代码动作
  • 完成
  • 定义
  • 突出
  • 链接
  • doc符号
  • 徘徊
  • 实施
  • 参考
  • 签名
  • 工作区符号

需要一些技巧来格式化和重命名工作,并且用户需要使用不同的扩展名命名视图文件并与phtml而不是php关联。 但是我认为这是一个最小的努力和最小风险的良好开端。

@bmewburn是的,听起来不错,我可以做到。 “ phtml”语言的想法是什么? 您将使用它来以编程方式转发请求吗?

@aeschli不转发请求,其想法只是让html服务器注册phtml的提供程序,并让php服务器注册phtml的提供程序,并让vscode处理单独的响应。

以上提供者都将合并响应或使用第一个非虚假响应。 因此,只要不使用单独的html和php服务器,就不要尝试为他们不了解的范围返回结果,那么这一切都应该起作用。 phtml id只是这两种语言服务器的共同点,最好具有多个语言文件关联,但这可能涉及更多吗? 另外,我想将php和phtml分开可以避免将仅php文件的请求发送到html服务器。

"files.associations": {
        "*.php": ["php", "html"]
    }

目前,我使用html和php doc选择器注册了php扩展名,但我对此设置中的html语言配置不满意。

文件关联只能分配给一种语言ID。 但是语言服务器可以自由提供所需的任何语言的文档。
情况1:HTML还会注册php ,参与所有请求,但仅在<?php .../?>以外时返回结果
可能性2:仅PHP语言服务器注册php ,并将所有请求<?php .../?>转发到所有注册为phtml语言的语言服务器。

因此,仅通过commands.executeCommand就可以实现转发?

@bmewburn我创建#36396。 让我们对这个项目进行讨论。
是的,使用`commands.executeCommand'就像这里一样

有关html intellisense for php的任何更新

大家好,有什么方法可以混合使用php和html编码吗? HTML高亮显示在php文档中不正确:-(

835b4a9809

看起来差不多2年后仍然没有适当的解决方案?

这个问题解决了吗?

不,仍然不可能。 不幸的是,由于这个问题,我被迫回到ST3。 我希望有一天他们能解决这个问题,我可以回来。

@bmewburn很棒的工作。 这已经需要了很长时间了。 非常感谢。 现在没有理由不切换到VSCode

@ kilevvri1,请分享您的设置。 对我来说不工作

@ expo87我使用了默认的PHP Intelephense请求的设置设置
“ php.suggest.basic”:false
我还没有使用任何其他设置。

笨蛋我刚刚设置了VSCode环境,并准备好了所有插件。 然后我遇到了这个问题,仍然没有解决方法。
很遗憾,因为我开始非常喜欢VSCode,但是现在我必须返回Sublime Text。

@DannyMexen尝试PHP Intelephense扩展

@ kilevvri1此扩展需要安装PHP。 对我来说,不需要在系统中安装PHP! 为什么我要这样做? 只是为了查看正常的混合语法是php和其他语言? 为什么此选项无法立即使用?! Sublime Text安装文件8,5 Mb-混合突出显示效果很好。 CodeLite安装文件50 Mb-混合突出显示效果很好。 而且不需要安装PHP!

我同意@ expo87 ,该功能应该在VS Code中开箱即用。 PHP Intelliphense已经向前迈出了一步,可以实现自动完成,但是我根本无法突出显示任何html语法。

@ kilevvri1 ,嘿,怎么样了? 我做到了,但没有成功。

但是,我仍然无法在.php文件中设置HTML格式。 我也同意这种功能应该是开箱即用的。

其他一切都很好,但是这一件事毁了我的经验。 根据公司政策,正确格式化我的代码非常重要。 这是希望在将来。

这很麻烦,但是对于大文件,我将文件重命名为.html,进行格式化,然后再重命名为.php(相信我,我尝试了所有技巧都没有成功)。

我喜欢VSCode,我会给它一个星期。 如果我的工作明显减慢,我将返回ST 3。

对于那些抱怨安装PHP以使扩展正常工作的人,您是否真的没有在本地计算机上安装PHP? 您是否真的在浪费时间在测试之前将代码放在服务器上,并一遍又一遍地进行?

PHP应该安装在本地,这看起来像是给定的。 如果您的应用程序不在本地运行,则您需要解决一些开发问题。

对我而言, @ TheColorRed不需要在本地查看我的代码的结果,然后在服务器上上传文件。 使用WinSCP和ST-我的工作轻快。 当然我知道我在做什么:-)

@TheColorRed,您在互联网上发现某个错误并且被动地抱怨时间价值的人。

image

虽然我们都希望此功能具有开箱即用的功能,但事实并非如此。 VSCode团队将其视为非问题或非常低的优先级。 @bmewburn进行了PHP Intelephense扩展,与其他选择相比,我很满意。

@ expo87无需解释您的工作流程。 我们做的事情有些不同。

因为这
我使用smarty,因此我可以将所有HTML移到tpl文件,而不是php代码内-_-
并使我的代码更清晰

@DannyMexen我在格式化PHP文件中的HTML格式时没有问题。 我确实在settings.json中关闭了PHP Intelephense格式"intelephense.formatProvider.enable": false

我真正想要的只是让>不会触发自动完成建议(并使我停止为消除它而做的事情)。 当您关闭HTML元素并想转到下一行时,这很烦人,但是如果您“偶然地”按下Enter键,则会导致垃圾,您必须删除然后再替换新行。 上面的建议似乎都无法解决此特定问题。

所需要做的只是https://github.com/Microsoft/language-server-protocol/issues/138。
@jrieken您能否就您提出的中间解决方案是否很快在范围内发表评论?

我们也许可以实现多字符触发器,但是它听起来并不简单。 在此之前,扩展应该使用潜在的触发字符序列中的最后一个字符。

@ kilevvri1没有骰子。 我已关注您的帖子,但无济于事。 我可以查看您的所有设置吗? 如果没有问题,也许您已安装的扩展列表。

我得到的最接近的是更改文件关联并修改美化功能,但即使那样也无济于事。
无论如何,谢谢大家。 似乎没有一个直接的答案。

经过数小时的尝试,我无法使这个东西正常工作。 甚至@bmewburn建议的“ PHP Intelephense”插件也没有为我工作。 输入“ php”并按Tab,它会扩展为: http :

当您将HTML与PHP结合使用时,这是最基本的功能。 至少作为WordPress主题开发人员。

我可能会再次检查VS Code,但是现在,切换回Sublime。 一开始我很喜欢VS Code的强大功能,但这些小问题(或缺少功能)会使许多PHP / WP开发人员远离它。

我和@zeshanshani@DannyMexen在一起-如果我无法在PHP文件中编写html,那么这个编辑器就可以了。

ang 我非常喜欢它,但是这一件事(看似简单)使它对我毫无用处。

也许我在这里有点不对劲,这个问题并不是我所指的。 无论如何,就像我提到的那样,我喜欢VS Code的强大功能,因此我进行了进一步检查,找到了解决该问题的简便方法。

我遇到的问题是,当您位于<?php ?>块之外并尝试使用快捷方式打开PHP块时,它不起作用。

因此,我创建了用于扩展PHP块的自定义HTML代码段。 我现在创建了以下3个片段:

  • php-扩展为<?php ?>
  • 如果-以有条件的条件打开。
  • 的foreach -在打开的foreach循环。

如果有人正在寻找以下代码段代码:

https://gist.github.com/zeshanshani/ccbfe8c0177a2513f0a92d0747349f50

结果如下:

PHP Expand in HTML

唯一的问题是,它还可以在.html文件中扩展代码段,这与Sublime Text不同,在Sublime Text中,您可以定义范围,因此只有在PHP的情况下,特定代码段才会扩展: http :

顺便说一句,是否有人尝试启用emmet.triggerExpansionOnTab设置? 它在PHP字符串内的选项卡支持上启用emmet HTML扩展。

要进行此设置,请转到用户设置并添加以下行:

"emmet.triggerExpansionOnTab": true

截图: http

结果如下:

HTML Expand in PHP Strings

我为我(可能还有其他人)找到了可行的解决方案。

我安装了Jun Han的“ _Auto Close Tag_”扩展名。 然后在我的设置中添加以下内容:

"php.suggest.basic": false,
"auto-close-tag.SublimeText3Mode": true,

现在,当在.php文件中且在<?php ?>标记之外时,我在完成输入html标记后没有得到$_cookie ,并且当我键入</它会自动完成适当的结束标记。

希望这可以帮助遇到与我相同问题的其他人。

@Chenzo您的解决方法是格式代码吗? 如果按Ctrl + Shift + I ,PHP和HTML代码是否会相应地格式化/缩进?

@DannyMexen hmmm ...不。 Altho,这是VScode的天生东西吗? 甚至我的beautify插件似乎也不知道在.PHP文件中如何处理HTML。

@Chenzo我明白了。 是的,这里也一样。 这是我要使用VSC作为独家文本编辑器所需的唯一功能。

@zeshanshani @DannyMexen
如果PHP Intelliphense无法正常工作
尝试重新安装vscode和PHP Intelliphense
要么
尝试使用everedit ,这是一个很好的编辑器,但不是IDE,只有Windows

感谢@iscraft的建议,但我正在运行Linux,并且我将ST 3用于所有PHP项目。

因此,如果我正确地遵循了这一点,则阻塞问题将在LSP中解决(是!),并在Felix的语言服务器中得到解决(是!),但是在VS Code Insiders中尚未解决。

VS Code Insiders中存在不断出现的<?php自动完成的较小的相关问题,Felix的Intellesense插件处于活动状态,所以我想这也在VS Code中等待吗?

https://github.com/felixfbecker/vscode-php-intellisense/issues/205#issuecomment -347794655

我想它将跳过Insiders Edition,并将其设置为1.19?

settings.json ,添加以下属性可以正常工作。

"files.associations": {"*.php": "html, php"},

好吧,我想那毕竟不是真的。 返回崇高文字?

files.association是我尝试的事情之一。 从来没有为我工作。
Twitter的官方帐户刚刚告诉我提出这个问题,希望
有一天,团队将实施它。 没有这是一件很奇怪的事情
开箱即用。 从字面上看,唯一让我无法使用VScode的东西
作为我的独家编辑。
@Ken Newman是我所有PHP项目的解决方案。

在2017年12月14日星期四晚上10:31,Ken Newman [email protected]
写道:

好吧,我想那毕竟不是真的。 返回崇高文字?

-
您收到此邮件是因为有人提到您。
直接回复此电子邮件,在GitHub上查看
https://github.com/Microsoft/vscode/issues/670#issuecomment-351827207
或使线程静音
https://github.com/notifications/unsubscribe-auth/APewuYFpWR6_mZbUO-XVNMwH0LpYb_Cqks5tAYWugaJpZM4Gpk-J

-
问候,

丹尼·麦森(Danny Mexen)。

HTML是否现在可以在1.19版本的PHP语言/文件中运行? 刚刚经过测试,即使没有任何扩展,我也可以看到它正在工作...

@jsieler在1.19和1.20中仍然无法正常工作。

VSCode 1.19无法自动完成.php文件中的html属性:( !!!!
第2年...

带有扩展名的HTML在PHP文件中一直运行良好。 这个问题可能已经解决。

phphtml

@bmewburn我也这么认为

不,就我个人而言,我正在等待支持,而无需外部扩展。

关键问题也适用于其他语言。

让我们明确一些我们在这里报告的问题。

现在,我将为自己发言。

问题不是PHP文件中的HTML自动完成失败,而是在VSCode的“格式文档”功能的上下文中对PHP文件中的HTML代码进行格式化。 这清楚吗?

如果您的默认键盘快捷键是Ctrl + Shift + I ,则可能会发现仅PHP代码将在还包含HTML代码的PHP文件中格式化。 HTML代码完全未格式化。

例如,此功能在ST 3中是开箱即用的。

像自动完成,自动关闭标签等功能都可以正常工作。 选中PHP行,然后选中HTML行,尝试设置文档格式,只有PHP代码会正确缩进。

我希望这可以为这里的事情打扫一切。

谁在和我一起遇到这个问题?

@bmewburn仅当您为php文件选择HTML语言模式时才起作用,但是对于php部分的代码,您的样式不好:(

@ Perumal93

“ files.associations”:{“ * .php”:“ html,php”},

它根本不起作用! 它仅使用您上次使用的语言(在这种情况下为php)。 其他人则被完全忽略。

@SharakPL使用哪个版本的VSCode ru?

@ kilevvri1我刚刚从1.19.1升级到1.19.2。 没变化 :(
如果我选择PHP作为文件语言,则html建议不起作用。
如果我选择HTML作为文件语言,则php部分将样式设置为纯文本,并且Output显示许多错误。

@SharakPL您的VSCode用户设置中是否链接了电话路径? 我现在不在家,但是回来后我会帮忙,因为智能感知并不完美,但是它确实想知道什么时候可以正常工作,所以我会尽力帮助。

@SharakPL我的意思是您的PHP路径。 很抱歉,打我的电话。

@ kilevvri1是的,我有

“ php.suggest.basic”:是的,
“ php.validate.enable”:是的,
“ php.validate.executablePath”:“ c:\\ wamp64 \\ bin \ php \ php5.6.25 \ php.exe”,
“ php.validate.run”:“ onType”,

它应该像Sublime Text 3中一样,在PHP语言模式下,总是总是建议相应的html代码

@SharakPL
根据扩展建议:
“ php.suggest.basic”:false

试试看,让我知道

@ kilevvri1没有变化:(

哦,我明白了! PHP格式的文件中存在某种HTML智能感知,但是通过EMMET建议进行管理: https :
我一直因为无法输入<a而无法添加简单链接而感到烦恼,因为没有任何代码段被建议。 我认为只键入a显示所需内容,即使我有链接,我也必须逐个字母手动添加所有属性。 使用EMMET,我可以简单地键入a#mylink.btn.btn-success获得<a href="" id="mylink" class="btn btn-success"></a> 。 太酷了,但是要获得更准确的html,我应该使用a#mylink.btn.btn-success[title="click me" target="_blank"]并且必须逐个字母地输入新的部分。 SublimeText的样式会更好:
html_is

有什么方法可以将.php手动添加到HTML intellisense工作的文件扩展名列表中? 这可以在Eclipse中完成。

@graddev有人建议
"files.associations": {"*.php": "html, php"}
在用户设置中,但这对我不起作用

当他们增加这个机会时,谁知道呢?
是2020年,他们仍然没有这样做。

HTML和CSS文件在PHP文件中自动完成。

需要添加此功能。 HTML标记的属性自动完成功能根本不起作用。

伙计们,我使用的是一个非常令人作呕的解决方案,但它(有点)有效。 我有一个带宏键的键盘,因此我建立了宏来更改语言模式。 如果需要HTML intellisense,请按M1;如果要PHP,请按M2。

请尝试使用智力扩展

@aeschli这不能解决关键问题。 在我维护的扩展中,在Smarty扩展中,也会发生相同的问题。 令人失望的是,该功能的PHP扩展没有得到进一步的支持,您正试图通过建议使用另一个使用糟糕解决方法的扩展来分散注意力。 但是,问题仍然存在。 实际上,此问题应在下一个sprint中解决,并且您不应该考虑将其放置在积压的订单上,而轻视该问题。 您对社区利益有何看法?

抱歉,但是我有点生气。

(实际上,我三个月前说了同样的话。)

VSCode团队可以从事的领域很多,并且拥有专业知识。 不幸的是,我们不是PHP开发人员。 这就是为什么我们提出了一个开放的扩展API和一个市场。 请尝试扩展,以支持我们,并为作者提供良好的反馈。
我知道,如果所有扩展都是内置的并与VSCode一起提供,那就太好了,但是我们也希望保持下载量少。

我们与intelephense扩展的作者Ben一起工作,以改进PHP中的HTML完整性。 我认为所采取的方法是正确的方法。 为了提供良好的用户体验,只有PHP作为“主要”语言才能完全理解嵌入式HTML内容(例如,如何编码,如何解析PHP变量)。 根据我的经验,其他通用解决方案只能解决部分问题,对于无法解决的问题,我们最终会遇到数百个未解决的问题。

@ jens1o对不起,您感到沮丧,并且在不久的将来这方面没有计划。 请通过支持我们的扩展生态系统来帮助我们,或者给智能(以及其他PHP扩展)一个机会。

好吧,我好好呼吸,然后冷静下来。 因此,让我们将重点转移到我的扩展上:我是否应该保留HTML语言服务器的分支,以便我的用户可以完成HTML? 这也是我指的关键问题。 我认为其他语言受到的打击更大。 问题是,Smarty如此灵活,可以用于几乎任何语言(例如csv,json),无论哪种。 因为它是不受任何语言限制的模板系统。 因此,我需要保留一个csv语言服务器(不存在),一个XML语言服务器,一个JSON语言服务器的分支……我想知道技术资源允许多少种语言?

给智能(以及其他PHP扩展)机会。

我将坚持使用@felixfbecker的php-intellisense,因为我喜欢代码库,即使我没有HTML intellisense(这就是为什么我要为这个问题而努力),并且这是官方的特色扩展(当我在此之前就已经使用了)。 我喜欢语言服务器的概念,并且我认为负责文件不同部分的多个语言服务器是改进该概念的下一步。

@aeschli您是否认为扩展名可以使php中的html部分获得与独立html文件相同的行为? 包括让所有html插件在该部分都能正常工作?
众所周知,扩展系统确实很重要,但并非所有功能都适合于插件。 我们真正需要的是将一个文件解析为多种语言,然后分别对待。 这应该是代码编辑器的内置功能。

而且,所有PHP文件实际上都是HTML,带有特殊的HTML标记。 仅此标签中的内容不应被视为HTML。 它只是嵌入HTML的一种语言,没有它就无法工作(CLI除外)。 因此,问题不在于PHP中的HTML,HTML是主要容器。 而且很多语言都可以嵌入HTML中,例如CSS JavaScript VBScript SVG Perl Java,我认为没有任何扩展都可以在没有官方支持的情况下做到这一点。

谢谢@popcorner。 我实际上想说同样的话,但是您写得更好。 :)

有人知道ST是怎么做到的吗? 即使是高级解释也将不胜感激。

让我们保留有关PHP中的HTML智能感知的问题。 我将使用有关如何为嵌入式语言启用语言功能的技术来改进我们的文档。 我创建了#47288作为起点。

@ jens1o我在该问题
@paldepind我还添加了对您评论

我对此仍然感到不舒服。 因此afaik可以解决此问题,因为您不打算将其发布给PHP,而是使用该解决方法?

问题仍然没有解决方案?

我正在使用Laravel Blade ..所以这里没有PHP标记..想知道它们将如何实现该功能。

解决,但是我不知道为什么...也许更新php inteliphense或使用vscode内部人员...
test

@victormongi您使用什么php inteliphense?

@jfnadev我不知道它是如何工作的,但这是我的vscode版本和智能版本:
image

@victormongi我们有相同的配置

@jfnadev这些是我安装的扩展:
extensions.json:

[
  {
    "metadata": {
      "id": "2cbad5ee-b4ab-4de8-a1c7-77fede846155",
      "publisherId": "patbenatar.advanced-new-file",
      "publisherDisplayName": "patbenatar"
    },
    "name": "advanced-new-file",
    "publisher": "patbenatar",
    "version": "1.1.0"
  },
  {
    "metadata": {
      "id": "697255a9-3f36-44c8-b084-d3b91edfb23a",
      "publisherId": "HookyQR.beautify",
      "publisherDisplayName": "HookyQR"
    },
    "name": "beautify",
    "publisher": "HookyQR",
    "version": "1.3.0"
  },
  {
    "metadata": {
      "id": "9d674f86-f8d2-4fe1-8fa6-a17b40caf4ac",
      "publisherId": "pawelgrzybek.bimbo-theme",
      "publisherDisplayName": "pawelgrzybek"
    },
    "name": "bimbo-theme",
    "publisher": "pawelgrzybek",
    "version": "0.4.5"
  },
  {
    "metadata": {
      "id": "f583eafd-aa0d-4ccb-8f44-d1e610389660",
      "publisherId": "CoenraadS.bracket-pair-colorizer",
      "publisherDisplayName": "CoenraadS"
    },
    "name": "bracket-pair-colorizer",
    "publisher": "CoenraadS",
    "version": "1.0.27"
  },
  {
    "metadata": {
      "id": "e337c67b-55c2-4fef-8949-eb260e7fb7fd",
      "publisherId": "Shan.code-settings-sync",
      "publisherDisplayName": "Shan"
    },
    "name": "code-settings-sync",
    "publisher": "Shan",
    "version": "2.9.0"
  },
  {
    "metadata": {
      "id": "532533c9-a894-4a58-9eee-bbfbe7c06f71",
      "publisherId": "mikestead.dotenv",
      "publisherDisplayName": "mikestead"
    },
    "name": "dotenv",
    "publisher": "mikestead",
    "version": "1.0.1"
  },
  {
    "metadata": {
      "id": "1946e66b-9eea-45a9-816b-316bf9d7d1ab",
      "publisherId": "Zyst.Egoist-One",
      "publisherDisplayName": "Zyst"
    },
    "name": "Egoist-One",
    "publisher": "Zyst",
    "version": "1.18.0"
  },
  {
    "metadata": {
      "id": "7b71fc1b-190d-4f7d-95d1-93e422649b0a",
      "publisherId": "Zignd.html-css-class-completion",
      "publisherDisplayName": "Zignd"
    },
    "name": "html-css-class-completion",
    "publisher": "Zignd",
    "version": "1.17.1"
  },
  {
    "metadata": {
      "id": "8d5687fe-08f5-4a8e-917a-23aef71db6b3",
      "publisherId": "zhengxiaoyao0716.intelligence-change-case",
      "publisherDisplayName": "zhengxiaoyao0716"
    },
    "name": "intelligence-change-case",
    "publisher": "zhengxiaoyao0716",
    "version": "1.1.0"
  },
  {
    "metadata": {
      "id": "6f35c257-7fd5-4bc2-9cd1-01976589c17a",
      "publisherId": "arcticicestudio.nord-visual-studio-code",
      "publisherDisplayName": "arcticicestudio"
    },
    "name": "nord-visual-studio-code",
    "publisher": "arcticicestudio",
    "version": "0.6.0"
  },
  {
    "metadata": {
      "id": "a41c1549-4053-44d4-bf30-60fc809b4a86",
      "publisherId": "christian-kohler.path-intellisense",
      "publisherDisplayName": "christian-kohler"
    },
    "name": "path-intellisense",
    "publisher": "christian-kohler",
    "version": "1.4.2"
  },
  {
    "metadata": {
      "id": "a439d61f-cd9c-453f-b8c7-186f73d44915",
      "publisherId": "MehediDracula.php-constructor",
      "publisherDisplayName": "MehediDracula"
    },
    "name": "php-constructor",
    "publisher": "MehediDracula",
    "version": "0.0.8"
  },
  {
    "metadata": {
      "id": "044b4b31-2969-4af3-895d-855433b8b46d",
      "publisherId": "felixfbecker.php-debug",
      "publisherDisplayName": "felixfbecker"
    },
    "name": "php-debug",
    "publisher": "felixfbecker",
    "version": "1.12.2"
  },
  {
    "metadata": {
      "id": "5e69f001-f945-4c97-baf0-320d82a153b3",
      "publisherId": "felixfbecker.php-intellisense",
      "publisherDisplayName": "felixfbecker"
    },
    "name": "php-intellisense",
    "publisher": "felixfbecker",
    "version": "2.3.1"
  },
  {
    "metadata": {
      "id": "96fa4707-6983-4489-b7c5-d5ffdfdcce90",
      "publisherId": "esbenp.prettier-vscode",
      "publisherDisplayName": "esbenp"
    },
    "name": "prettier-vscode",
    "publisher": "esbenp",
    "version": "1.2.2"
  },
  {
    "metadata": {
      "id": "e52bce95-a629-455f-8626-e7301b9e372a",
      "publisherId": "robinbentley.sass-indented",
      "publisherDisplayName": "robinbentley"
    },
    "name": "sass-indented",
    "publisher": "robinbentley",
    "version": "1.4.8"
  },
  {
    "metadata": {
      "id": "735af542-944f-4b07-b336-9df27d7b8d84",
      "publisherId": "smlombardi.slime",
      "publisherDisplayName": "smlombardi"
    },
    "name": "slime",
    "publisher": "smlombardi",
    "version": "2.31.2"
  },
  {
    "metadata": {
      "id": "d6ba4b7b-539f-456a-b0f6-0348df44cdf3",
      "publisherId": "nikitaKunevich.snippet-creator",
      "publisherDisplayName": "nikitaKunevich"
    },
    "name": "snippet-creator",
    "publisher": "nikitaKunevich",
    "version": "0.0.4"
  },
  {
    "metadata": {
      "id": "529697b9-b343-4b1c-ba2f-f5ef692132d4",
      "publisherId": "ms-vscode.sublime-keybindings",
      "publisherDisplayName": "ms-vscode"
    },
    "name": "sublime-keybindings",
    "publisher": "ms-vscode",
    "version": "3.0.3"
  },
  {
    "metadata": {
      "id": "a150991b-031b-457a-b823-ef4c45425a1b",
      "publisherId": "karyfoundation.theme-karyfoundation-themes",
      "publisherDisplayName": "karyfoundation"
    },
    "name": "theme-karyfoundation-themes",
    "publisher": "karyfoundation",
    "version": "17.0.0"
  },
  {
    "metadata": {
      "id": "2f5dd8cb-d251-4d70-abfe-ddebcb077483",
      "publisherId": "octref.vetur",
      "publisherDisplayName": "octref"
    },
    "name": "vetur",
    "publisher": "octref",
    "version": "0.11.7"
  },
  {
    "metadata": {
      "id": "d96e79c6-8b25-4be3-8545-0e0ecefcae03",
      "publisherId": "vscodevim.vim",
      "publisherDisplayName": "vscodevim"
    },
    "name": "vim",
    "publisher": "vscodevim",
    "version": "0.11.3"
  },
  {
    "metadata": {
      "id": "d637104e-1fd7-4063-98fc-8afe46012c9b",
      "publisherId": "sleistner.vscode-fileutils",
      "publisherDisplayName": "sleistner"
    },
    "name": "vscode-fileutils",
    "publisher": "sleistner",
    "version": "2.8.1"
  },
  {
    "metadata": {
      "id": "aaee577c-f062-495a-9816-0cbd442f1d25",
      "publisherId": "ecmel.vscode-html-css",
      "publisherDisplayName": "ecmel"
    },
    "name": "vscode-html-css",
    "publisher": "ecmel",
    "version": "0.2.0"
  },
  {
    "metadata": {
      "id": "c46b0018-f317-4b6c-a785-d2039b27338f",
      "publisherId": "wix.vscode-import-cost",
      "publisherDisplayName": "wix"
    },
    "name": "vscode-import-cost",
    "publisher": "wix",
    "version": "2.6.2"
  },
  {
    "metadata": {
      "id": "ffda6552-0ad5-431b-a4fa-0905a7e4f3f0",
      "publisherId": "bmewburn.vscode-intelephense-client",
      "publisherDisplayName": "bmewburn"
    },
    "name": "vscode-intelephense-client",
    "publisher": "bmewburn",
    "version": "0.8.8"
  },
  {
    "metadata": {
      "id": "80e9cc3c-eb09-48ed-afda-f1cfd9c9ca3f",
      "publisherId": "phproberto.vscode-php-getters-setters",
      "publisherDisplayName": "phproberto"
    },
    "name": "vscode-php-getters-setters",
    "publisher": "phproberto",
    "version": "1.1.0"
  },
  {
    "metadata": {
      "id": "9b2c953d-6ad4-46d1-b18e-7e5992d1d8a6",
      "publisherId": "akamud.vscode-theme-onedark",
      "publisherDisplayName": "akamud"
    },
    "name": "vscode-theme-onedark",
    "publisher": "akamud",
    "version": "2.1.0"
  },
  {
    "metadata": {
      "id": "ee33fd31-7bb4-4252-8368-fdd5bcd94cf8",
      "publisherId": "akamud.vscode-theme-onelight",
      "publisherDisplayName": "akamud"
    },
    "name": "vscode-theme-onelight",
    "publisher": "akamud",
    "version": "2.1.0"
  }
]

有什么变化吗? 我有同样的问题。

我也+1。

我不敢相信3年前这个问题仍然没有解决,最好继续使用SublimeText3

我认为这是必不可少的功能。 我只是在等待它迁移到VS Code😞

我不确定在这一点上我们是否都在指同一件事。

在2018年5月14日星期一1:53 PM,Miqueias Penha通知单@ github.com
写道:

PHP智能手机
高亮匹配标签

工作! s2

-
您收到此邮件是因为有人提到您。
直接回复此电子邮件,在GitHub上查看
https://github.com/Microsoft/vscode/issues/670#issuecomment-388790414
或使线程静音
https://github.com/notifications/unsubscribe-auth/APewudsZw-Cu5mpgLrBJ8vUPagFUxB5Rks5tyXApgaJpZM4Gpk-J

-
问候,

丹尼·麦森(Danny Mexen)。

vscode没有给出关于php的信息。 请添加此。

我已经安装了PHP Intelephense。 这个问题为我解决了。

https://github.com/bmewburn/vscode-intelephense

只是我们在这里很清楚。

无法在PHP文件中格式化HTML代码(Ctrl + Shift + I)。

@venoel您是说安装PHP Intelephense可以做到吗
那?

在2018年5月30日星期三晚上8:17,venoel [email protected]写道:

我已经安装了PHP Intelephense。 这个问题为我解决了。

-
您收到此邮件是因为有人提到您。
直接回复此电子邮件,在GitHub上查看
https://github.com/Microsoft/vscode/issues/670#issuecomment-393264440
或使线程静音
https://github.com/notifications/unsubscribe-auth/APewuX-9NlZ3_tgvbVnOADg57CLN0yBlks5t3uItgaJpZM4Gpk-J

-
问候,

丹尼·麦森(Danny Mexen)。

@DannyMexen。
我的意思是我正确地获得了标签建议,并且缩进效果很好。

微软正在收购GitHub!
但是这个问题仍然存在!
大声笑!

@venoel
众所周知。 很高兴为您工作。

无论我做什么,我都无法在PHP文件中格式化HTML代码。

在2018年6月4日星期一11:00 AM,venoel [email protected]写道:

@DannyMexen https://github.com/DannyMexen
我的意思是我正确地获得了标签建议,并且缩进效果很好。

-
您收到此邮件是因为有人提到您。
直接回复此电子邮件,在GitHub上查看
https://github.com/Microsoft/vscode/issues/670#issuecomment-394283911
或使线程静音
https://github.com/notifications/unsubscribe-auth/APewuVJC1tDUt9qWZ2Hjn76-NEQjSC15ks5t5PdBgaJpZM4Gpk-J

-
问候,

丹尼·麦森(Danny Mexen)。

VSCode绝对应该具有为特定文件类型设置2种或更多种语言模式的选项,以便同时对所有文件同时具有语法高亮和智能感知功能。 即使现在只有1个VSCode实例,您也可以在不同语言模式的不同文件中使用它。 老实说,我不知道为什么这么难实现。 有人甚至更早地将其用作有效的解决方案,尽管它既不起作用,也从未使用过,但绝对可以:

"files.associations": {
    "*.phtml": ["html", "php"]
}

是的,完全同意@SharakPL。 我从不明白给出的答复,但是
比我在这里更聪明的人说,这并不容易
实施的事情。 我自己不够聪明,但是因为
例如,ST3提供了该功能,我希望它是一个
其他地方的默认功能。

在2018年6月6日,星期三,9:33 PM,SharakPL [email protected]写道:

VSCode绝对应该具有为2种或更多种语言模式设置选项
特定文件类型对所有文件具有语法突出显示和智能提示
他们在同一时间。 即使现在有了1个VSCode实例,
只是在具有不同语言模式的不同文件中。 我不诚实
知道为什么很难实施。 甚至有人更早地将其用作
有效的解决方案,尽管它既行不通,也从未成功,但是绝对可以
应该:

“ files.associations”:{
“ * .phtml”:[“ html”,“ php”]
}

-
您收到此邮件是因为有人提到您。
直接回复此电子邮件,在GitHub上查看
https://github.com/Microsoft/vscode/issues/670#issuecomment-395187031
或使线程静音
https://github.com/notifications/unsubscribe-auth/APewuQ4MZdnzRvFyDZC2LSkhfPLVHt7Wks5t6C6XgaJpZM4Gpk-J

-
问候,

丹尼·麦森(Danny Mexen)。

同意@DannyMexen甚至记事本++都有它。 现在是2018年,vscode仍然没有此功能。 这很疯狂。

_关闭此问题,它永远不会发生。

@bsienn关心解释吗? 为什么简单的文本编辑器中的常见功能在VSCode中是不可能的?

@SharakPL解释吗? 阅读3岁的DEAD主题,它将向您解释它不会发生。

@bsienn它的存在与emnet,HTML在PHP使用emnet,努力学习吧.. https://docs.emmet.io/请...它的工作无论如何...

@bsienn然后向我解释:为什么放弃是解决此问题的原因?

@benyaminl emmet很好,但是仅当我创建新标签时才起作用。 当我需要编辑标签(即向链接添加一些属性)时,这是没有用的,因为php文件中的html仍然没有智能感知

嗯,这就是我试图忽略哈哈哈的想法。 仍然
当我认为有人尝试实现它时,这并不容易

从我的华硕飞马X005发送

Pada tanggal Kam,2018年6月14日19.26,SharakPL [email protected]
菜单:

@bsienn https://github.com/bsienn然后向我解释一下:为什么你给
向上应该是关闭此线程的原因?

@benyaminl https://github.com/benyaminl emmet很好,但是只有
创建新标签时有效。 当我需要编辑标签(即添加)时,它没有用
链接<#m_4226514043244462616_issuecomment-359139115>的一些属性,
因为php文件中的html仍然没有智能感知

-
您收到此邮件是因为有人提到您。
直接回复此电子邮件,在GitHub上查看
https://github.com/Microsoft/vscode/issues/670#issuecomment-397275321
或使线程静音
https://github.com/notifications/unsubscribe-auth/ACr9NMadCpzlgPV4BjF9uM2kTA4DlOz-ks5t8lZdgaJpZM4Gpk-J

我已经尝试从Brackets.io转换为VS Code,因为我已经阅读了许多有关Intellisense的精彩文章。 此基本功能阻止了我。 令我恐惧的是它可以追溯到3年了,什么也没做。

有谁知道是否有插件或方法来注册.php文件以使用.html自动完成功能?

谢谢你的帮助。

关于这个问题有什么消息吗?
我相信,只需对html文件中的混合编辑进行相同的实现即可,其中html + css + js可以正常工作。

另一种选择是在扩展API中实现一种观看文件摘录并更改所选语言的方式。

之所以这样做,是因为我对PHP中的嵌套HTML感到恼火,它的格式应基于您对html.format的任何本机设置以及保存/键入PHP中的Format HTML格式的编辑器格式。

我也可以通过这种方式获得完全自动完成的智能感知。

@ RiFi2k嗨! 我尝试安装您的扩展程序,但对我来说没有任何变化。 在描述中设置了与工作无关的扩展。

@BxDev嘿! 所以你需要
html.format.enable = true
editor.formatOnSave = true
以及vscode中与您可能需要的html格式或编辑器格式相关的任何其他设置。

然后,它想在.php文件中设置嵌套HTML的格式,因此您还需要确保您的.php文件中包含如下代码:

<?php
$hi = true;

?>
<div class="correct-formatting">
                                     <div class="wrong-formatting">
</div>
</div>

保存时,应修复HTML div的

如果您仍然有问题,请告诉我们,我们将帮助您顺利进行。

@ RiFi2k感谢您的回复!
我在用户设置中编写此代码:
"html.format.enable": true, "editor.formatOnSave": true
之后,我用您的示例创建了一个php文件,但是它不起作用:-(
l213wgru87dzrr

@BxDev实际上看起来好像做得很完美

<?php
$hi = true;

?>
<div class="correct-formatting">
                                     <div class="wrong-formatting">
</div>
</div>

<?php
$hi = true;

?>
<div class="correct-formatting">
        <div class="wrong-formatting">
        </div>
</div>

这就是它的全部功能,希望您对功能不感到困惑

@ RiFi2k哦,是的:)我明白了:)很抱歉。 但是对我来说,非常重要的是混合php / html / js / css文档中的高亮对标记。 感谢您的工作!

这是一个有3年历史的问题,我感觉永远无法解决。
在编辑器中这是一件非常基本的事情,这使我的日常工作变得异常烦人。

我可能不得不切换回ST3,因为我感觉VScode(尤其是最近)一直在通过添加各种奇特的功能来回退,而忽略了它们的核心问题。

@TheDutchCoder这是因为现在没有人想要编写PHP,这是正确的做法。 :D

@steebcheen,请继续关注这个话题。 谢谢

@Tyriar无论如何,有人为此分配了吗? 还是不是?
编辑:哦,它已经分配了。

@ RiFi2k您好,感谢您的帮助! 我尝试了您的扩展程序,但是没有用。 我尝试了您提供的设置,但仍然没有骰子。 也许这取决于使用中的php formatter? 您建议使用什么扩展名首先启用php格式?

OK,快速更新:可以保存,很好! 它不适用于右键单击上下文菜单。 我想这是一个公平的妥协:)

我认为这个问题只是我的偏爱。 当我将HTML代码混合到php时,格式真的很混乱,就像我按Tab时那样,它将Tab的大小设为4,然后添加一个新的Tab,现在Tab的大小为2。我想从ST3切换到VSC,但这阻止了我从切换到VSC。 我想我现在必须留在ST3上。

@thanasisHS对不起,刚刚看到了这个。

我的扩展程序仅在配置了保存格式时才运行,并且不作为实际的PHP格式化程序运行,而是在onBeforeSave上运行。

我几乎以几个要点发布了我的整个配置,随便花了我几个月的工作才能使其变得完美。 对于格式化,我使用PHPCBF,但是使用这一代码,我知道它只有300次安装,但是他更新并合并了所有无效phpcbf扩展中的代码,这很划算。
https://marketplace.visualstudio.com/items?itemName=ValeryanM.vscode-phpcbf

如果有人对我的配置也有兴趣,这是我的要旨。 它执行php,js,sss,css,vue-使用eslint,stylelint,phpcbf,phpcs,更漂亮的文件自动格式化和加载。 一旦完成所有设置,这就是一个节拍。

全球
https://gist.github.com/RiFi2k/d43e84788b1798252f30cac28b6f6eda

项目
https://gist.github.com/RiFi2k/42e294f3785bdbbc2641c4b18955e16f

所有的点文件,composer.json,package.json,php规则集
https://gist.github.com/RiFi2k/8b753d1f12a36760f3ee6e1322daf708

解决此问题。 我已经在上述问题的说明中解释了原因。

谢谢。 每天代码变得越来越糟。 我以为您在Microsoft对这一切的FOSS创意都很满意,但它仍然不是独立的,而是专注于通过广告Github和Azure来赚钱。

@ jens1o我很困惑,这个决定全是关于培育OSS生态系统的。 引用的扩展是OSS项目,请帮助使其变得更好。 VS Code团队的资源不是无限的。

另外,请不要忘记我们的行为准则,并以尊重的方式

我只是不明白为什么您要优先处理其他任务,尽管社区肯定希望这些任务优先。 我只听到“减少问题”和“超出范围”,而且是的,“有限的资源”(这就是社区在这里的原因,哈哈)。 没有人抱怨事情不会很快到来,但是更多地关注社区的需求肯定会有所帮助。 为什么即使它们不污染任何东西,我们也需要保持较低的发行数量? 在我眼中,Code路线图在2遍迭代之前就达到了最佳效果。 现在,它是所有关于赚钱(有赚多年来的大社区;我使用它,因为第一演示Build();每天),通过集成支付和第三方产品(如GitHub的,归微软)。

我是说我在这个社区中不再感到受欢迎(并且我真的很失望),我不会以任何方式攻击您,因此没有理由在此引用COC。 公开讨论是FOSS软件的一部分。

但是谈到COC,我要引用以下内容:

了解分歧

我不明白你为什么要拒​​绝我,只是因为我不同意你的政治。

我试图了解您为什么改变了政治,所以请您详细说明一下?

@egamma我认为您关闭此问题的理由不合理。 我知道Visual Studio代码不能也不应提供所有现成的功能,但是对PHP语言的HTML支持应该是PHP编辑器的最基本功能之一。 也许PHP的大多数功能都应该由扩展提供,但这一功能不应该由扩展提供。 许多编辑器都具有此功能,即使简单的文本编辑器Notepad ++也具有此功能。 这是基本PHP语法的一部分,没有它就无法编写PHP。 如果没有此功能,编辑人员不应说它支持PHP,因为它无法以正确的方式读取PHP。

为什么HTML文件中的Javascript可以很好地工作,而HTML中的CSS可以在vscode中没有任何扩展名的情况下很好地工作呢? 似乎vscode具有此功能,但不想为PHP创建类似的功能,这是不公平的。

此功能对于PHP用户确实非常重要,大多数用户不会尝试搜索这些问题,他们对扩展没有任何帮助,这些扩展可以帮助他们获得这些基本和必要的功能。 这些用户可以简单地下载该编辑器,安装它并找到此“错误”,然后立即将其卸载并获得对vscode的深刻印象。 他们在这里什么也没说。 想要在这里分享意见的所有用户都是真正希望vscode变得更好的人。 没有这种功能编写PHP代码的感觉实在是太痛苦了,您无法区分开来,您必须手动计算html标签,或者将文件格式从php转换为html,然后再从html转换为php。 在没有安装任何扩展的情况下,我在vscode上尝试过的所有其他语言都不会有这种不好的感觉。 用户不会知道原因,他们只是在乎用户体验。 请考虑一下并做一些事情,即使添加一点高亮效果也不错:

  • 提供一些基本的HTML支持,或者
  • 提供具有此功能的官方扩展,并在使用PHP时自动安装
  • 甚至是对所有PHP用户的简单推荐,只需单击一下即可安装推荐的扩展,然后获得此功能并使vscode能够真正支持PHP

同意@popcorner是正确的,这对于PHP开发

现在,我实际上认为整个问题的核心在于您不能同时注册多个格式扩展名。 从根本上讲,这是一场竞赛,只有一场竞赛可以获胜,而且您看不到用户试图在何时运行以及实际运行了哪种。 因此,对于PHP文件,可恶的是,您将使用格式化扩展程序,该扩展程序通过HTML执行PHP代码。 但是,如果您可以链接格式扩展名并且存在挂接顺序或可以更改的内容,则可以注册一个PHP和一个HTML,然后设置优先级/顺序以使第一个/最后一个运行。 例如,如果您可以解决整个问题,那么...

第一步运行PHPCBF或类似的PHP格式扩展。
第二步运行js-beautify html格式,无论如何它都会跳过所有PHP并且仅执行HTML,这与我在扩展程序“用PHP格式化HTML”中解决该问题完全相同。 但是我必须在onBeforeSave上运行它,而不是使用默认的格式注册,但这不一定是解决方案。

综上所述,这是非常必要的,但是与其解决/不解决问题,不如不去探讨我的想法,然后为用户和扩展开发人员提供一种更好的每种语言和格式体验的方式。

此页面是否有帮助?
0 / 5 - 0 等级