Giả sử bạn chỉ có một lần xuất hiện pattern
trước đó =
, bạn có thể thực hiện việc này theo hai bước:
:%s/pattern/saturn/g
:%s/saturn\(.\{-}=\)/pattern\1/
Các \{-}
hướng dẫn .
để phù hợp với lười biếng (còn gọi là không tham lam).
Giải trình
Bước đầu tiên này thay thế tất cả các lần xuất hiện của pattern
của saturn
bước tiếp theo sau đó tìm kiếm từ saturn
trước =
và thay thế nó bằng pattern
.
Thận trọng
Điều này giả định một lần xuất hiện duy nhất =
trên mỗi dòng.
Một cách tốt hơn (chỉ giả sử một =
dòng trên mỗi dòng)
Bạn có thể làm điều đó với một macro đệ quy:
qaqqa:%s/\(=.\{-}\)pattern/\1saturn/@aq@a
Điều này thay thế một lần xuất hiện pattern
sau =
với saturn
. Khi được lưu trữ dưới dạng macro và được gọi đệ quy, nó sẽ tiếp tục hoạt động trên tệp cho đến khi không còn gì để thay thế. Đó là hackish nhưng nó hoạt động.
Xem thêm