2012-02-14 29 views

Trả lời

7

Bên cạnh sử dụng một từ tạm thời cho sự thay đổi, bạn cũng có thể sử dụng abolish Plugin như thế này:

:%SubVert/{foo,bar}/{bar,foo}/g 
+0

Cảm ơn! Chính xác những gì tôi đang tìm kiếm. –

1
  1. :% s/foo/bbaarr/g
  2. :% s/bar/foo/g
  3. :% s/bbaarr/foo/g

Nó phải tồn tại một thông minh cách để làm điều đó, nhưng điều này sẽ làm việc cho chắc chắn!

+0

Hiệu chỉnh 3.:% s/bbaarr/bar/g – Bhaskar

0

Bạn có thể làm điều đó bằng cách sử dụng từ tạm thời. Chỉ cần chắc chắn rằng nó không tồn tại trong tài liệu hiện tại.

/\<asd123\> 
:%s/\<foo\>/asd123/g 
:%s/\<asd123\>/bar/g 
:%s/\<bar\>/foo/g 
10

Hãy xem này: how to write only one pattern to exchange two strings in two-ways in vim

:s/foo\|bar/\={'foo':'bar','bar':'foo'}[submatch(0)]/g 
+1

Đây là một chút phức tạp hơn, có, nhưng không có plugin? nhiều người có thể thích điều này. –

+0

@JasonMcGhee: Khi chuỗi thay thế bắt đầu bằng "\ =" phần còn lại được hiểu là biểu thức. – kev

+0

yêu thích nó, đó là một số vimfu ngay tại đó –

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