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

时间:2017-09-14 14:11:50

标签: templates phpstorm

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

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

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

1 个答案:

答案 0 :(得分:2)

ATM不可能。

https://youtrack.jetbrains.com/issue/IDEABKL-7178 - 观看此门票(星级/投票/评论)以获得有关任何进展的通知。目前还没有计划在不久的将来实施类似的东西。

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

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

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

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

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

如果文件观察器功能因任何原因而不适合 - 请查看grunt -watch或同样可以轻松禁用观看的内容(这样您的脚本只会在您的观察者(构建选手)正在观看时调用)。 / p>