Khi sử dụng grep từ VIM, làm thế nào để chuyển đến kết quả?


32

Khi sử dụng plugin grep cho VIM, tôi có thể tìm kiếm thư mục hiện tại cho tất cả các lần xuất hiện của một chuỗi trong một tập hợp các tệp, như sau:

:grep Ryan *.txt

Điều này tạo ra một cái gì đó như thế này:

file1.txt:3:Ryan was here
file2.txt:10:Ryan likes VIM
file3.txt:5:superuser.com is a fav of Ryan
(1 of 3): Ryan was here
Press ENTER or type command to continue

Nếu tôi nhấn enter, nó sẽ đưa tôi trở lại trình chỉnh sửa của mình. Những gì tôi thực sự muốn làm là có thể mở một trong những tệp đó và nhảy đến nơi tìm thấy chuỗi. Có cách nào để làm việc này không? Phần này 1 of 3khiến tôi nghĩ rằng có một cách để xem qua các kết quả, nhưng tôi không biết những lệnh nào có sẵn cho tôi. Bất cứ ai có thể làm sáng tỏ về điều này?

Câu trả lời:


34

Khi bạn nhấn ENTER, bạn sẽ nhìn vào dòng 3 của file1.txt. Để nhảy đến trận đấu tiếp theo, thực hiện :cn; để nhảy đến trận đấu trước, thực hiện :cp. Thực thi :copensẽ mở ra một cửa sổ chứa danh sách các trận đấu. Di chuyển con trỏ đến trận đấu mong muốn và nhấn ENTER để chuyển đến trận đấu đó.

Để biết thêm về cách sử dụng :grep, xem

:help grep
:help quickfix.txt

:cn:cpđể di chuyển tiến và lùi trong danh sách quickfix có thể khó xử, vì vậy tôi sử dụng các ánh xạ này:

nmap <silent> <C-N> :cn<CR>zv
nmap <silent> <C-P> :cp<CR>zv

Ngoài ra, :greplệnh không phải là một plugin; đó là một phần của Vim.


Câu trả lời tuyệt vời, cảm ơn! BTW, bạn có thể thực hiện tìm kiếm đệ quy thông qua các thư mục với vim grep không?
Marplesoft

Miễn là bạn đang chạy trên hệ thống Unix, bạn có thể thêm bất kỳ đối số nào vào Vim :grepmà bạn sẽ thêm vào greplệnh được thực thi từ trình bao. Vì vậy, bạn có thể thực hiện tìm kiếm đệ quy thông qua tất cả các tệp .txt trong và bên dưới thư mục hiện tại với :grep -R --include=*.txt Ryan .. Bạn cũng có thể thực hiện tìm kiếm đệ quy bằng :vimgreplệnh của Vim , nhưng các đối số khác nhau và tôi hiếm khi sử dụng vì nó chậm hơn :grep.
garyjohn
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.