VIM thấy các biểu thức chính quy khớp với khi bạn nhập


8

Nếu tôi gõ /regexthì con trỏ tạm thời nhảy đến trận đấu đầu tiên và tất cả các trận đấu được tô sáng. Bản cập nhật này khi tôi gõ. Có thể có hành vi này khi tôi đã sẵn sàng để thay thế? Ví dụ, khi tôi đang làm việc trên một biểu thức chính quy phức tạp :%s/\<regex\>/, tôi muốn biết cái gì phù hợp trước khi tôi bóp cò và thay đổi mọi thứ. Có cách nào để làm điều đó?


Sẽ thật tuyệt nếu nó hoạt động theo cách nó hoạt động với tìm kiếm: làm nổi bật những gì hiện đang khớp. Bạn đã tìm thấy cách tốt nhất để làm điều đó?
Anton Daneyko

Câu trả lời:


12

Nhập tìm kiếm của bạn bằng / (hoặc ? ) Để bắt đầu, điều này sẽ cho phép bạn điều chỉnh regex của mình (vì bạn đang sử dụng incsearch)

Khi bạn đã hiểu tất cả, bạn có thể sử dụng mẫu tìm kiếm trước đó (mẫu bạn vừa sử dụng) trong lệnh thay thế bằng cách sử dụng hai dấu phân cách cho mục 'tìm kiếm':

/elephant                       " find the next elephant
:%s//rhino/gc                   " make then all rhinos!

Tất nhiên, bạn có thể sử dụng các lựa chọn và phạm vi, như bình thường.

:1,15s,,cougar,g
:'<,'>s::tiger:

+1 để dạy tôi vềs//
Steven Lu

2

Một lựa chọn là bạn có thể có một cờ xác nhận c.

:%s;regex;replacement;gc

:h s_flags:

[c] Confirm each substitution.  Vim highlights the matching string.  You can type:              
        'y'     to substitute this match
        'l'     to substitute this match and then quit ("last")
        'n'     to skip this match
        <Esc>   to quit substituting
        'a'     to substitute this and all remaining matches
        'q'     to quit substituting

Bạn cũng có thể thử greplệnh để xem đầu ra được lọc và tệp gốc được tô sáng.

:g/re/p hoặc là :g/re/


Tôi thích nó, nhưng nó vẫn yêu cầu tôi phải hoàn thành biểu thức chính quy trước khi tôi thấy nếu có bất cứ điều gì phù hợp.
John Berryman

0

Chà, cách ngắn để xem biểu thức chính quy của bạn sẽ phù hợp với việc tìm kiếm bằng /cách sử dụng biểu thức chính quy mong muốn của bạn. Nó sẽ nhảy đến trận đấu đầu tiên và đánh dấu nó trong khi bạn đang gõ nó. Hãy thử nó - vimsẽ không làm bạn thất vọng.


Đúng, mặc dù đó là những gì tôi đã nêu trong câu hỏi. Tôi ước nó sẽ cập nhật khi tôi sẵn sàng thay thế. Với giải pháp của bạn, tôi phải thử regex và sau đó sao chép nó (bằng cách nào?) Và sau đó sử dụng nó để thay thế. Đó chưa đủ tốt.
John Berryman
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.