Tôi có một tình huống mà tôi muốn thay thế FOO bằng BAR qua một tệp; tuy nhiên, tôi chỉ muốn làm điều đó ở những nơi nhất định, nói giữa các dòng 68-104, 500-537 và 1044-1195. Trên thực tế Anh đã đánh rơi đánh dấu (ma, mb, mc, ...) tại các dòng của lãi suất, và tôi chạy như sau:Tìm kiếm và thay thế Vim - giới hạn ở một số dòng nhất định
:'a,'b s/FOO/BAR/g | 'c,'d s/FOO/BAR/g | 'e,'f s/FOO/BAR/g
tôi phải lặp lại hàng chục này lần với tìm kiếm khác nhau và thay thế thuật ngữ s/CAT/DOG, vv, mà đã trở thành một nỗi đau phải có để viết lại dòng lệnh mỗi lần. Tôi đã may mắn ở chỗ tôi chỉ có 3 nơi mà tôi muốn giới hạn tìm kiếm của mình (tưởng tượng nếu có 30 hoặc 40, dòng lệnh sẽ lộn xộn như thế nào).
Viết ngắn chức năng, có cách nào khác để thực hiện việc này không?
Trên ghi chú liên quan. Tôi sao chép FOO đến 's' (tìm kiếm) đăng ký, và Bar đến 'r' (thay thế) và cố gắng một dòng lệnh của
:'a,'b s/\[email protected]/\[email protected]/ | 'c,'d s/\[email protected]/\[email protected]/ | 'e,'f s/\[email protected]/\[email protected]/
này sẽ có lưu tôi phải viết lại dòng lệnh mỗi thời gian, nhưng than ôi, nó không hoạt động. Bit thay thế là tốt \ = @ r, nhưng các \ = @ s trong mẫu tìm kiếm đã đưa ra một lỗi.
Mọi mẹo sẽ được đánh giá cao.
Bạn cũng có thể sử dụng Control-P và KIỂM SOÁT -N (Tôi nghĩ) để chuyển qua các lệnh trước đó. Điều này sẽ loại bỏ sự cần thiết phải gõ lại lệnh. – jahroy
bình thường là chấp nhận câu trả lời, nếu nó hữu ích. – epsilonhalbe