2009-02-03 41 views

Trả lời

357

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:

enter image description here

Ví dụ, để thay thế này và tất cả các trận đấu còn lại, sử dụng a.

+25

+1, tôi đã học được điều gì mới hôm nay! Vim có rất nhiều bí mật ẩn. :) –

+0

Thật vậy! Tôi không biết về c modifier. – strager

+9

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ữ. –

8

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ế).

+0

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 .. .) – strager

+1

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 N.n.n. (Điều này sẽ nhảy ra khỏi từ dưới con trỏ, nhưng sau đó nhảy trở lại ngay sau khi bạn đã thay đổi sự xuất hiện tiếp theo. – PEZ

+0

''? – Sother

17

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.

9

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'.

56

Đá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.

+6

Một trong những điều tuyệt vời nhất khi sử dụng/học vim là lỗ sâu của thỏ sâu đến mức nào! – ken

+1

Tốt, tôi luôn tìm kiếm, sau đó sử dụng /để dán tìm kiếm cuối cùng vào lệnh thay thế. –

+0

Chính xác những gì tôi nhớ từ Văn bản tuyệt vời! – Xenofex

2

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.

Các vấn đề liên quan