Có nhiều hướng khác nhau để làm điều đó.
Bên trong thư mục hiện tại
Nếu bạn muốn thực hiện tìm kiếm / thay thế trong cây dự án, bạn có thể sử dụng danh sách đối số của Vim .
Đơn giản chỉ cần mở Vim và sau đó sử dụng :argslệnh để điền danh sách đối số. Bạn có thể vượt qua trong nhiều tên tập tin hoặc thậm chí là ảm đạm.
Ví dụ, :args **/*.rbsẽ tìm kiếm đệ quy thư mục hiện tại cho các tệp ruby. Lưu ý rằng điều này cũng giống như mở Vim với vim **/*.rb. Bạn thậm chí có thể sử dụng findlệnh của shell để lấy danh sách tất cả các tệp trong thư mục hiện tại bằng cách chạy:
:args `find . -type f`
Bạn có thể xem danh sách args hiện tại bằng :argscách tự chạy . Nếu bạn muốn thêm hoặc xóa các tập tin khỏi danh sách, bạn có thể sử dụng :argaddcác :argdeletelệnh tương ứng.
Khi bạn hài lòng với danh sách, bây giờ bạn có thể sử dụng :argdolệnh mạnh mẽ của Vim để chạy lệnh cho mọi tệp trong danh sách đối số::argdo %s/search/replace/g
Dưới đây là một số mẹo để tìm kiếm (dựa trên một số ý kiến):
- Sử dụng một ranh giới từ nếu bạn muốn tìm kiếm "foo" nhưng không phải "foo_bar". Sử dụng
\<và các \>cấu trúc xung quanh mẫu tìm kiếm như vậy::argdo %s/\<search\>/foobar/g
- Sử dụng
/ccờ tìm kiếm nếu bạn muốn Vim yêu cầu xác nhận trước khi thay thế cụm từ tìm kiếm.
- Sử dụng
/ecờ tìm kiếm nếu bạn muốn bỏ qua các lỗi "không tìm thấy mẫu".
- Bạn cũng có thể chọn lưu tệp sau khi thực hiện tìm kiếm :
:argdo %s/search/replace/g | update. Ở đây, :updateđược sử dụng bởi vì nó sẽ chỉ lưu tệp nếu nó đã thay đổi.
Mở bộ đệm
Nếu bạn đã mở bộ đệm, bạn muốn thực hiện tìm kiếm / thay thế, bạn có thể sử dụng :bufdo, nó chạy một lệnh cho mọi tệp trong danh sách bộ đệm của bạn ( :ls).
Lệnh này rất giống với :argdo: :bufdo %s/search/replace/g
Tương tự :argdovà :bufdo, có :windovà :tabdohành động tương ứng trên các cửa sổ và tab. Chúng ít được sử dụng nhưng vẫn hữu ích để biết.
/ccờ để xác nhận thay thế.