我正在使用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 + ack.vim用户如何解决这个问题?
答案 0 :(得分:5)
有趣的问题!我可以想到几种方法:
我得到了最后一个工作。 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;
}
在return 1;
上方添加另一行:
return if $filename =~ /^jquery/;
再次回到我的第一个建议(补丁确认允许使用文件名模式进行过滤)Andy might take a patch。
顺便说一句,您可能已经想到了这一点,但是您对--type-add
的使用似乎不是ack命令行的有效语法:
--type-add=jquery=jquery*.js
它只是期望文件扩展名。希望这有帮助!