Bạn đang sử dụng vim. Bạn đã có một công cụ để thực hiện việc này.
Có thể dự đoán, có bảy câu trả lời đã nói để sử dụng grep
. Nhưng tôi dường như là người duy nhất cho đến nay đã nhận thấy từ câu hỏi của bạn rằng bạn đang sử dụng vim
. Như vậy, mặc dù bạn có thể sử dụng grep
từ bên trong vim
, bạn cũng có thể sử dụng vim
công cụ tích hợp sẵn. Điều này được gọi thông qua :vimgrep
lệnh.
Để tìm kiếm "tất cả các tệp nguồn C trong thư mục hiện tại cho các cuộc gọi đến hàm toUpperCase()
", hãy gõ một vim
lệnh
:vimgrep "\<toUpperCase\_s*(" *.c
Danh sách kết quả khớp được tự động tải lên danh sách quickfix, có thể truy cập bằng một trong hai (xem trợ giúp trực tuyến để biết sự khác biệt tinh tế)
:copen
:cwin
Để tìm định nghĩa hàm , thay vì gọi đến nó, ctags
là công cụ, như được đề cập trong Gilles
câu trả lời , kết hợp với các lệnh :tjump
hoặc :tselect
.
Tại sao nên sử dụng :vimgrep
?
Trợ giúp trực tuyến ( :help grep
) liệt kê một số lý do mà tôi sẽ không vẹt ở đây. Hơn nữa để những, so sánh tác động của :vimgrep
với các dietbuddha
's câu trả lời . dietbuddha
Dòng lệnh tạo ra một grep
quy trình riêng cho từng tệp nguồn C riêng lẻ. Nó thậm chí không sử dụng xargs
để giảm chi phí đó. Và bạn vẫn phải phân tích đầu ra bằng cách nào đó để gọi trình soạn thảo văn bản của bạn trên các tệp nguồn có liên quan sau khi hoàn tất. :vimgrep
không bỏ qua nhiều quá trình bổ sung, và sử dụng kết quả là chính sự đơn giản. Chỉ cần chọn một trong các mục trong danh sách quickfix kết quả sẽ tự động định vị con trỏ trên dòng có liên quan của tệp nguồn có liên quan.
Trong thực tế, nó thực hiện chính xác những gì bạn đã viết bạn sẽ làm bằng tay, ngoại trừ tự động. Đó là cách tự động để thực hiện những hành động soạn thảo văn bản. Nó tải tệp lên như thể được tải bằng tay, tìm kiếm biểu thức chính quy (sử dụng cùng một cú pháp biểu thức chính quy mà bạn đang sử dụng ở nơi khác vim
), ghi lại các vị trí xảy ra khớp và sau đó dỡ tệp.