Rất thường xuyên, tôi thấy mình cần thực hiện một sự thay thế sẽ có các kết quả trùng khớp trên một tệp lớn và với các biểu thức tìm kiếm và thay thế không tầm thường.
Ví dụ, nói rằng tôi có một số cuộc gọi chức năng như okFunction(arg1, arg2 arg3)
. Các đối số sẽ khác nhau với mỗi cuộc gọi chức năng, tất nhiên. Bây giờ nói rằng tôi đã phát hiện ra một chức năng tốt hơn mà không cần arg2
. Tôi có thể dễ dàng điều chỉnh toàn bộ tập tin với
:%s/\<okFunction(\(\w\+\), \(\w\+\), \(\w\+\))/betterFunction(\1, \3)/gc
Mặc dù về mặt khái niệm đơn giản, tôi không chắc mình đã có cú pháp đúng trong mẫu khá dài này. Các c
cờ thực sự giúp ở đây, nhưng vấn đề là khi yêu cầu xác nhận, vim sẽ không hiển thị gì trận đấu sẽ được thay thế bằng. Ý tôi là, nó sẽ hiển thị biểu thức thay thế, nhưng không phải là kết quả được đánh giá. Nếu tôi xác nhận thay thế bằng y
, vim sẽ ngay lập tức nhảy sang trận đấu tiếp theo và tôi sẽ không được xem liệu tôi có phạm lỗi gì không.
Tôi đã tìm thấy plugin vim-over giải quyết một phần vấn đề, nhưng chỉ khi tất cả các phép toán được hiển thị trên màn hình khi bạn đang gõ lệnh. Khi bạn nhấn enter, hành vi giống hệt như tôi đã mô tả ở trên và tôi không nhận được bản xem trước.
Vì vậy, có cách nào để vim đánh giá biểu thức thay thế khi yêu cầu xác nhận các lệnh thay thế không?
%
, kiểm tra xem kết quả có đúng như tôi mong đợi không và sau đó sử dụng thay thế bằng %
(chỉ một vài lần nhấn phím :<up><c-b>%
:). Rõ ràng một tùy chọn xem trước sẽ hiệu quả hơn nhiều. Mặc dù không có bản vá nào, có lẽ người ta có thể bọc sự thay thế trong chức năng vimscript bằng loại tùy chọn này nhưng nghe có vẻ nhiều việc ...