Khi nào nên sử dụng: grep và: vimgrep trong vim?


16

Trong vim :makegiúp dễ dàng xây dựng và sửa lỗi, :grep:vimgrephành xử như thế nào :make. Nhưng tại sao bạn cần hai lệnh này? Tại sao không chỉ tìm kiếm các mẫu và chỉ cần nhấn n? Những lợi thế của họ so với chỉ tìm kiếm là gì?

Câu trả lời:


16

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.


4

/?chỉ tìm kiếm trên bộ đệm hiện tại nhưng :grep:vimgrepmất tập tin tùy ý / mô hình / globs như các đối số.


4

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.


0

Có 3 ưu điểm chính tôi thấy

  1. 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 )

  2. 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 )

  3. 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 /

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.