Làm thế nào để khớp một từ kết thúc bằng chữ in hoa và một chữ cái cụ thể?


9

Tôi có những từ như lblSERINOdtrong câu. Các từ được phân cách bằng khoảng trắng.

Tôi muốn thay thế dở cuối của tất cả các từ như vậy với u. Vì vậy, ví dụ lblSERINOdsẽ như thế nào lblSERINOu.

Tôi đã thử s/.*\ud /u /gnhưng Vim nói rằng nó không thể tìm thấy .*\ud.

vấn đề ở đây là gì?

Câu trả lời:


10

Một cách để làm điều đó sẽ là:

:%s/\u\zsd\>/u/g

Ban đầu tôi cho rằng động cơ regex Vim mới (đang được quảng cáo là "nhanh hơn, nhưng giới hạn") không thể hiểu \utại :substitute, nhưng đây không phải là trường hợp. Tôi khá nghĩ bây giờ mà OP quên sử dụng %và chỉ cần tìm kiếm trên dòng sai; điều này sẽ giải thích thông báo lỗi, nhưng tất nhiên vẫn cần phải được xác nhận là "nguyên nhân".


2
Bạn có chắc chắn về điều 'động cơ'? Tôi không thấy làm thế nào điều này làm cho một sự khác biệt.
Christian Brabandt

Không, không chắc chắn chút nào ... Tôi đã làm một bài kiểm tra nhanh mà không hiệu quả, sau đó đọc lại patterntrong tệp trợ giúp, thấy rằng công cụ mới bị hạn chế hơn so với cái cũ, cho rằng đó là nguyên nhân .. . Thử nghiệm đầu tiên của tôi khá / có thể là thiếu sót
VanLaser

5

Có vẻ như bạn có thể đã thay đổi 'magic'tùy chọn của Vim từ mặc định thành 'nomagic'. Bạn có thể kiểm tra điều này bằng lệnh

:verbose set magic?

Như tài liệu tại : help / ma thuật , 'nomagic'khiến cho .một regrec được coi là một dấu chấm theo nghĩa đen thay vì metacharacter có nghĩa là "khớp với bất kỳ nhân vật nào".

Tôi rất khuyên bạn nên để tùy chọn này ở giá trị mặc định của nó. Đây là một trong một vài lựa chọn thực sự không nên tồn tại và có thể gây ra sự cố tinh vi trong plugin.

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.