Tôi biết regex để làm một toàn cầu thay thế,Tìm kiếm tương tác/thay thế regex trong Vim?
%s/old/new/g
Làm thế nào để bạn đi về làm một tương tác tìm kiếm thay thế trong Vim?
Tôi biết regex để làm một toàn cầu thay thế,Tìm kiếm tương tác/thay thế regex trong Vim?
%s/old/new/g
Làm thế nào để bạn đi về làm một tương tác tìm kiếm thay thế trong Vim?
Thêm cờ c (trong cửa sổ lệnh vim):
:%s/old/new/gc
sẽ cung cấp cho bạn một yes/no nhắc ở mỗi lần xuất hiện của 'cũ'.
giúp đỡ built-in của Vim cung cấp thông tin hữu ích về các tùy chọn có sẵn một lần thay có xác nhận đã được chọn. Sử dụng:
:h :s
Sau đó cuộn đến phần trên tùy chọn xác nhận. Ảnh chụp màn hình dưới đây:
Ví dụ, để thay thế này và tất cả các trận đấu còn lại, sử dụng a
.
Tôi thường sử dụng find/thay thế/tiếp lệnh/lặp lại :-)
/old<CR>3snew<ESC>n.n.n.n.n.n.n.
Đó là find "old"
, substitute 3 characters for "new"
, find next
, repeat substitute
, và vân vân.
Đó là nỗi đau cho những thay thế lớn nhưng nó cho phép bạn bỏ qua một số lựa chọn cũ (bằng cách chỉ cần nhấn n
lần nữa để tìm số tiếp theo thay vì .
để lặp lại thay thế).
Tôi cũng sử dụng điều này, ngay cả đối với các văn bản tương tự. (3cW
Nó không phải là một antipattern! Thật ngọt ngào. Và bạn có thể tìm kiếm theo hướng ngược lại bằng N. Thật sự tốt nếu bạn thấy một từ và muốn thay đổi nó. * cwNewText
'
Tôi nghĩ bạn đang tìm kiếm c
, ví dụ: s/abc/123/gc
, điều này sẽ khiến VIM xác nhận thay thế. Xem: trợ giúp: thay thế để biết thêm thông tin.
Nếu bạn chỉ muốn đếm số lần xuất hiện của 'abc' thì bạn có thể làm %s/abc//gn
. Điều này không thay thế bất cứ điều gì nhưng chỉ báo cáo số lần xuất hiện của 'abc'.
Đánh dấu Biek chỉ ra cách sử dụng:
%s/old/new/gc
cho một tìm kiếm toàn cầu thay thế với xác nhận đối với từng thay. Tuy nhiên, tôi cũng thích tương tác xác minh rằng văn bản cũ sẽ khớp chính xác. đầu tiên tôi thực hiện tìm kiếm với một regex, sau đó tôi sử dụng lại mẫu:
/old.pattern.to.match
%s//replacement/gc
Các s//
sẽ sử dụng mô hình tìm kiếm cuối cùng.
Nếu văn bản thay thế của bạn cần thay đổi cho mỗi lần xuất hiện phù hợp (nghĩa là không chọn Có/Không để áp dụng thay thế số ít), bạn có thể sử dụng plugin Vim mà tôi gọi là interactive-replace.
+1, tôi đã học được điều gì mới hôm nay! Vim có rất nhiều bí mật ẩn. :) –
Thật vậy! Tôi không biết về c modifier. – strager
Học vim lệnh là một chút giống như chơi Nethack. Bạn không bao giờ biết những gì kỳ diệu một nhân vật duy nhất sẽ giữ. –