【问题标题】:ack search for content within Smarty TPL template filesack 在 Smarty TPL 模板文件中搜索内容
【发布时间】:2012-06-27 09:29:06
【问题描述】:

是否可以使用ack 在 Smarty 模板文件 (.tpl) 中搜索内容?

目前我只能在这些模板的缓存版本中搜索,它们本身就是 PHP 文件。

如果我像下面这样进行不区分大小写的ack 搜索,则会返回以下内容:

[crmpicco@dev dev_crmpicco]$ ack -i select\ the\ course
cache/templates/gb/%%9B^9B3^9B37B147%%course.tpl.php
48:                             <p><label>Select the course:</label></p>
64:                             <p><label>Select the course:</label></p>
83:                             <p><label>Select the course:</label></p>

【问题讨论】:

    标签: search smarty case-insensitive ack


    【解决方案1】:

    听起来您要问的是“我如何让 ack 1.x 将 .tpl 识别为有效的文件类型?”

    您想要的是将--type-set=smarty=.tpl 放在命令行或ACK_OPTIONS 环境变量或.ackrc 文件中。然后你可以说“ack --smarty foo”,它只会搜索 smarty 文件。

    您可能还想使用--ignore-dir=cache,这样 ack 就不会在您的缓存目录中搜索。

    区分大小写与这里的问题无关。

    【讨论】:

    • 我试过ack --type-add=smarty=.tpl,但没有运气:ack: --type-add: Type "smarty" does not exist, creating with ".tpl" ...
    • 我的错,是--type-set--type-add 为现有类型添加扩展。但是,您应该确认选择 .tpl 文件。执行ack -f 以查看 ack 选择要搜索的文件。
    • 由于某种原因,我似乎也无法使用该命令将 Smarty 模板添加到我的 .ackrc 文件中。这就是我正在做的事情:ack --type-set=smarty=.tpl 我得到一个错误:ack: No regular expression found. 这是预期的吗?
    • 是的,--type-set--type-add 不是永久的,就像没有像 -i 这样的其他开关是永久的。是的,您必须每次都指定该开关。幸运的是,由于您的 ~/.ackrc 每次都被添加到命令行中,因此将它们添加到您的 ~/.ackrc 每次都有效地指定它们。
    • 一旦将“tpl”定义为类型,就可以使用--tpl--notpl 标志。在你的情况下ack --type-set=smarty=.tpl --tpl searchterm。或者,将 --type-set 放入 ~/.ackrc 中,然后您可以随时使用 --tpl
    【解决方案2】:

    你的问题不清楚...

    如果你想找到模板的文件名,它在渲染后填充了一些内容,这里是它(加粗):

    缓存/模板/gb/%%9B^9B3^9B37B147%%course.tpl.php

    【讨论】:

    • 如果您重新阅读我的问题,您会看到我已询问是否可以在 Smarty 模板中搜索 content。我不是在寻找文件名。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-15
    • 1970-01-01
    • 1970-01-01
    • 2011-11-18
    相关资源
    最近更新 更多