PhpStorm:可以在每次文件编辑时更新文件模板吗?

Posted

技术标签:

【中文标题】PhpStorm:可以在每次文件编辑时更新文件模板吗?【英文标题】:PhpStorm: possible to update file template on each file edit? 【发布时间】:2018-02-23 13:48:00 【问题描述】:

我的phpStorm 2017.2 项目要求每个新文件都是从特定的。在“设置>>编辑器>>文件和代码模板>>PHP文件”中,我有以下模板:

<?php
/**
 * @author John Doe
 * @copyright $YEAR Acme
 * @created $DATE
 * @modified $DATE
 */

这很好用。 PhpStorm 动态填写年份和日期。但是,当我稍后回来对文件进行更改时,我总是需要记住手动更改@modified 行。有没有办法自动执行此操作,以便 onSave 或 onCommit(对于版本控制文件),使用 $DATE 的当前值更新该行?

【问题讨论】:

模板是“静态的”。这意味着:一旦在文件中使用(代码模板:例如为类创建 PHPDoc)或创建文件(文件模板),文本现在没有指向原始模板的“链接”,因为它只是文件中的文本. 【参考方案1】:

不可能自动取款机。

https://youtrack.jetbrains.com/issue/IDEABKL-7178 -- 观看这张票(星号/投票/评论)以获取有关任何进展的通知。目前没有计划在最近的将来实施类似的东西。

另一方面(如上述票证中的评论所述)——看看标准的“版权”插件是否有帮助(我自己从未使用过它,所以不知道它到底能做什么)。


一种可能的解决方案涉及编写您自己的脚本/程序(PHP 或您可以使用的任何其他语言)来解析您的文件(正则表达式匹配在这里应该可以正常工作 - 没有真正需要去和将文件解析为令牌)并更新此类信息:

查看每一行,直到找到匹配的行(可以添加一些保护逻辑来限制要解析的行数:如果在前 xx 行(例如 20)行中没有找到匹配的行,则假定该文件没有这样的评论/行); 根据文件修改时间戳更新日期/时间部分。

一旦你有了这样的脚本 - 只需使用 File Watcher 功能,以便在每次文件修改时调用它。

可能的缺点:当检测到文件修改时会触发 File Watcher ...可能包括外部所做的更改(例如,另一个编辑器/从远程主机/另一个 VCS 下载分支/等))。这可能会导致不必要/不需要的更新。

如果 File Watcher 功能由于某种原因不适合 - 请查看 grunt -watch 或类似的地方,您可以轻松禁用观看(因此您的脚本只会在您的 watcher(构建运行程序)正在观看时被调用)。

【讨论】:

一如既往地感谢您抽出宝贵时间回答。

以上是关于PhpStorm:可以在每次文件编辑时更新文件模板吗?的主要内容,如果未能解决你的问题,请参考以下文章

phpstorm如何从桌面拖入插件

PHPSTORM模板变量注释

如何在 PhpStorm 中编辑 .env 文件?

扩展Unity3D编辑器的脚本模板

怎么在phpstorm里查找编辑好的文件

PhpStorm 编辑器上更改文件后自动上传服务器