2009-03-19 22 views
62

Tôi đang sử dụng Vim và tôi muốn thay thế một số văn bản giữ chỗ bằng một chuỗi dài, kéo dài nhiều dòng, đã được viết ở đâu đó khác trong tệp .Thay thế với nội dung của đăng ký hoặc các dòng từ những nơi khác trong tập tin trong Vim

Có thể thay thế mẫu bằng nội dung của thanh ghi không? Một cái gì đó như

:%s/foo/<contents of register A> 

Nếu không, có thể thay thế bằng một loạt các dòng không? cái gì đó như

:%s/foo/<content of lines from 10 to 15> 

Trả lời

78

Theo http://vim.wikia.com/wiki/Search_and_replace Nó xuất hiện:

:%s/foo/\[email protected]/g 

Ngoài ra, nhấn <c-r>a sẽ chèn nội dung của đăng ký a.

Tuyệt vời - Tôi chưa bao giờ biết điều đó. Câu hỏi hay.

Một số thứ khác để làm với <c-r>: http://vimdoc.sourceforge.net/htmldoc/cmdline.html#c_CTRL-R

+0

tôi rất ấn tượng, bạn đã trả lời trong vòng chưa đầy một phút ... Cảm ơn! –

+0

Tôi đã luôn luôn muốn đưa mọi thứ vào các lệnh đến từ hệ thống clipboard làm việc tốt đẹp. – ojblass

+0

liên kết vimdoc bị hỏng, hãy sử dụng liên kết vimdoc này, sử dụng liên kết vimdoc này: http://vimdoc.sourceforge.net/htmldoc/undo.html#CTRL-R – 0x89

20
:%s/foo/\=getline(10, 15)/g 

:%s/foo/\=join(getline(10, 15))/g 
+0

Tôi nghĩ điều đó ngược lại với những gì anh ta tìm kiếm ... Tôi nghĩ anh ấy muốn một cái gì đó như: s/foo/10,15/ –

+0

Có lẽ tôi không thể hiện rõ ràng, nhưng những gì tôi muốn đạt được là thay thế 'foo' với ** nội dung ** của các dòng từ 10 đến 15, và không giới hạn sự thay thế cho các dòng 10-15. Cảm ơn bạn đã trả lời, anyway :) –

+1

Tôi đã thay đổi. Điều này có phù hợp không? –

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