Câu trả lời:
Như tài liệu nói:
Vim has two ways to find matches for a pattern: Internal and external.
Tóm lại, :vimgrepsử dụng cơ chế grep của Vim để đọc và tìm trong tệp. :grepsử dụng một lệnh bên ngoài để đạt được cùng một công việc.
Các /tìm kiếm là cho bộ đệm hiện tại mà thôi, trong khi :[vim]greptìm kiếm thông qua một mô hình các tập tin, cho phép bạn tìm kiếm trong toàn bộ một dự án cùng một lúc.
Có một cái nhìn :h grepđể biết thêm thông tin.
Một lợi ích của :[vim]grepviệc /?này là các kết quả được đưa vào danh sách quickfix (hoặc danh sách vị trí nếu bạn sử dụng :l[vim]grep), điều này có nghĩa là bạn có thể lấy danh sách tất cả các kết quả khớp bằng cách sử dụng :cl. Sau đó, bạn có thể sử dụng một số để đi thẳng đến kết quả bạn muốn từ danh sách.
Điều đó cũng có nghĩa là bạn có thể sử dụng cùng một lệnh để tìm kiếm bộ đệm hiện tại :[vim]grep pattern %như tìm kiếm toàn bộ cơ sở mã của bạn :[vim]grep pattern pathđể có một số đối xứng đẹp với nó.
Hơn nữa, sau đó bạn có thể phân nhánh và sử dụng Silver Surfer / Ripgrep để cung cấp cho bạn tìm kiếm rất mạnh mẽ. Đây có thể được ánh xạ đến :[vim]greplệnh.
Có 3 ưu điểm chính tôi thấy
Sử dụng một regexcông cụ / cú pháp nhất quán : Sử dụng :grep/vimgrepcho phép bạn xác định một grepprg, có thể được xác định, grep/ack/agv.v ... Sử dụng công cụ này bạn có thể tìm kiếm bộ đệm hiện tại hoặc nhiều bộ đệm / tệp, sử dụng một regexcông cụ nhất quán . Mặt khác, nếu bạn sử dụng tùy chọn vim/pattern , bạn sẽ bị kẹt trên công cụ regex mặc định của vim, có cú pháp khác so với extended regular expressioncú pháp. Vì vậy, bất cứ khi nào bạn phải tìm kiếm một biểu thức, bạn sẽ phải suy nghĩ / ghi nhớ xem bạn nên sử dụng \)hay chỉ )và những khác biệt khác. Điều này có thể rất khó chịu ( /programming/3864467/whats-the-difference-b between-vim-regex-and-n normal-regex )
vimgrep điền vào danh sách quickfix / location : bằng cách sử dụng :grep/vimgrepcho phép bạn điền vào danh sách tìm kiếm. ( https://medium.com/@lakshmankumar12/quickfix-and-location-list-in-vim-ca0292ac894d ).
Nếu bạn muốn sử dụng danh sách vị trí, bạn có thể sử dụng ]qphím tắt để điều hướng nó nếu bạn có plugin không nhìn thấy Tim-Popes ( https://github.com/tpope/vim-unimpaired )
tìm kiếm phức tạp trong khi trong vim : thông thường nếu bạn phải thực hiện các tìm kiếm phức tạp, bạn có thể phải sử dụng dòng lệnh. Tuy nhiên, nếu bạn xác định greprgđúng và sử dụng một lệnh như [1]
: vim / mẫu1 / find . -type f
Bạn có thể thực hiện các tìm kiếm rất phức tạp và hiển thị kết quả tìm kiếm trong location listhoặc quickfix list.
[1] http://vimcasts.org/episodes/search-mult Môn-files-with-vimgrep /