2009-12-14 20 views
19

Trong vim, tôi thường xuyên tìm kiếm với vimgrep. Tôi có ánh xạ như sau:Làm cách nào để loại trừ các mẫu tệp trong vimgrep?

map <leader>s :execute "noautocmd vimgrep /\\<" . expand("<cword>") . "\\>/gj **/*.*" <Bar> 
cw<CR> 5 

Vấn đề là có một số thư mục con tạm thời (như obj, objd) mà tôi không muốn tìm kiếm. Làm thế nào tôi có thể loại trừ các thư mục con phù hợp với các mẫu nhất định. Ví dụ: các thư mục con có tiền tố "objd" không được bao gồm trong tìm kiếm.

+0

Tôi không tìm thấy bất kỳ tùy chọn liên quan nào cho vimgrep. Bây giờ tôi sử dụng grep thay vào đó. –

+0

Bạn có thể sử dụng grep thay vì vimgrep. [Ở đây] (http://amix.dk/blog/post/175) giải thích cách sử dụng với tập lệnh có tên MyGrep –

Trả lời

13

Thay vào đó, bạn có thể thử ack. Nó tích hợp độc đáo với vim và có rất nhiều tùy chọn để thực hiện những điều bạn muốn làm.

Có một số tích hợp ack-vim trên GitHub. Ví dụ: herehere.

+1

+1: 'ack' thật xuất sắc. Cảm ơn các liên kết 'ack'-'vim'. – Johnsyweb

+0

Kho lưu trữ github thứ hai không khả dụng nữa. –

2

Ví dụ trong Ubuntu chỉ

sudo apt-get install ack-grep 

sudo ln -s /usr/bin/ack-grep /usr/bin/ack 

sau đó cài đặt http://www.vim.org/scripts/script.php?script_id=2572

và bây giờ thêm dòng bên cạnh vimrc của bạn

noremap <C-f> :copen<CR>:Ack --ignore-dir #first_ignore_dir# --ignore-dir #second_ignore_dir# -ai 
  • khung tìm kiếm mở nó bằng Ctr + F, vui chơi
22

Vim 7.3.570, bạn có thể sử dụng wildignore để loại trừ các mẫu với vimgrep.

Ví dụ, để bỏ qua các thư mục con objd:

:set wildignore+=objd/** 

trừ bổ sung có thể được bổ sung bằng cách tách mẫu với một dấu phẩy:

:set wildignore+=objd/**,obj/**,*.tmp,test.c 

tài liệu trợ giúp Xem Vim cho một vài chi tiết.

:help wildignore 
Các vấn đề liên quan