将vim中的grep搜索限制为与当前文件具有相同扩展名的文件

时间:2012-10-15 21:43:23

标签: vim grep keymapping

我试图制作一个键映射,用于grep光标下的单词。这就是我到目前为止所拥有的:

map <Leader>g :grep -r '<C-R><C-W>' ./<CR><CR>:cw<CR>

我希望这只能找到当前正在处理的I类型的文件(例如,在.coffee文件中的grepping不会列出.js文件)。使用grep,您可以(例如):

grep -r --include='*.coffee' 'whatever' ./

仅搜索具有特定扩展名的文件。为此,我需要当前文件的扩展名。那么,获取当前文件扩展名的最简单方法是什么?

如果有更好的方法来完成这项任务,那也会很棒。

1 个答案:

答案 0 :(得分:2)

当然,在我放弃并询问SO之后,我想出来了......

map <Leader>g :grep -r --include='*.<C-R>=expand('%:e')<CR>' '<C-R><C-W>' ./<CR><CR>:cw<CR>

expand()返回有关当前缓冲区的各种信息。退房:help expand()了解详情。

在这种情况下,expand('%:e')返回当前文件的扩展名。

在命令行模式下,&lt; C-R&gt; = some_function()&lt; CR&gt;将在命令行中插入some_function()的结果。