Áp dụng lệnh chế độ bình thường cho các trận đấu regex


10

Tôi đang sử dụng biểu thức chính quy sau đây để khớp với chuỗi tài liệu bên dưới định nghĩa hàm Clojure:

\vdefn.*\n\s*\zs"([^"]|\n)*"

Có cách nào để chạy lệnh chế độ bình thường gq(dòng định dạng) trên tất cả các kết quả khớp của mẫu này trong một tệp đã cho không?

Câu trả lời:


10

Sức mạnh của g:

:g/\vdefn.*\n\s*\zs"([^"]|\n)*"/normal gngq

Phần giữa các /s khá tự giải thích, vì đó là regex từ câu hỏi ban đầu của bạn.

normal gngqcuối cùng là một phần thú vị. gnsẽ chọn kết quả khớp tiếp theo của biểu thức chính quy và gqdĩ nhiên là định dạng lựa chọn này (như bạn đã đề cập trong câu hỏi của mình).

:glà phần thực sự tuyệt vời. Theo tôi, đây là một trong những tính năng hữu ích nhất của Vim. Lệnh gex lấy một regex và một lệnh Ex, và nó thực thi lệnh trên mỗi dòng mà regex khớp. Nếu bạn chưa tìm hiểu về nó :g, tôi thực sự khuyên bạn nên làm như vậy, vì nó sẽ giúp tăng năng suất của bạn lên rất nhiều. Một vài tài nguyên là của Vim :help :ghoặc Power of g trên Vim wiki.


Các gnmảnh được lựa chọn từ dòng nơi Vđược kích hoạt để các tiếp theo (không phải là người trên cùng một dòng) xuất hiện của các mẫu. Tài liệu của Vim nói rằng nếu chế độ trực quan được kích hoạt, lựa chọn được mở rộng từ dòng hiện tại thông qua mẫu tiếp theo. Điều này gây ra hành vi không mong muốn.

@merb Rất tiếc, đã không nhận ra điều đó. Đã chỉnh sửa.
Doorknob

Lựa chọn vẫn là từ dòng của trận đấu đến trận đấu tiếp theo . Bước qua các lệnh chế độ bình thường sẽ hiển thị thủ công cho //s<cr>tôi ở đầu trận đấu trên dòng hiện tại, nhưng //e<cr>để lại cho tôi ở cuối trận đấu tiếp theo, không phải trận đấu hiện tại.

1
Vấn đề dường như là với //s<cr>V. Khi tôi chạy, :normal Vtôi đi vào chế độ dòng trực quan, như mong đợi. Khi tôi chạy :normal //s<cr>con trỏ của tôi hạ cánh trên đầu tiên "của trận đấu, như mong đợi. Khi tôi chạy :normal //s<cr>Vtôi không có được một lựa chọn trực quan.

1
Giải quyết nó. Lệnh cần phải được normal gngq. Đề nghị chỉnh sửa.
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.