如何让Ack忽略jQuery文件?

我正在使用Vim Ack.Vim,并且对如何忽略 Jquery文件中的命中进行了简要的介绍.我有一个.ackrc文件定义(见下文),但我在黑暗中刺伤.
--type-add=ruby=.haml,.rake,.rsel,.builder
--type-add=html=.html.erb,.html.haml
--type-add=js=.js.erb
--type-add=css=.sass
--type-set=cucumber=.feature
--type-add=jquery=jquery*.js
--ignore-dir=vendor
--ignore-dir=log
--ignore-dir=tmp
--ignore-dir=doc
--ignore-dir=coverage
--sort-files
--color
--follow
--group
--nojquery

ack.vim用户如何解决这个问题?

解决方法

有趣的问题!我可以想到几种方法

>补丁ack以允许使用文件名模式进行过滤(最好:ack需要此功能)
>修改ack.vim以忽略某些文件名模式(不知道该怎么做)
> ack的过滤器输出,带有一个包装器脚本/程序(脆弱/令人讨厌的munge ack的输出)
>过滤器输入文件列表给予ack,带有包装器脚本/程序(可执行)
>补丁ack忽略jQuery文件(kludgy,但工作)

我得到了最后一个工作. Ack是用Perl编写的,所以很容易阅读和修改.在您的系统上查找Ack.pm.我使用Ubuntu 11.10并安装了ack-grep来获取ack;我的Ack.pm在/usr/share/perl5/App/Ack.pm找到.如果安装了ack的独立版本,那么您将编辑的文件称为“ack”.寻找子程序is_searchable().这是我看到的:

sub is_searchable {
    my $filename = shift;

    # If these are updated,update the --help message
    return if $filename =~ /[.]bak$/;
    return if $filename =~ /~$/;
    return if $filename =~ m{^#.*#$}o;
    return if $filename =~ m{^core\.\d+$}o;
    return if $filename =~ m{[._].*\.swp$}o;

    return 1;
}

在上面返回1之后添加另一行

return if $filename =~ /^jquery/;

再次,回到我的第一个建议(补丁ack允许过滤与文件名模式)Andy might take a patch为此.

顺便说一句,你可能已经解决了这一点,但是对于–type-add的使用似乎不是ack命令行的有效语法:

--type-add=jquery=jquery*.js

它只是期望文件扩展名.希望这可以帮助!

相关文章

jQuery表单验证提交:前台验证一(图文+视频)
jQuery表单验证提交:前台验证二(图文+视频)
jQuery如何实时监听获取input输入框的值
JQuery怎么判断元素是否存在
jQuery如何实现定时重定向
jquery如何获取复选框选中的值