Hãy nói rằng tôi có tập tin rất đơn giản sau đây
a
b
c
d
e
và tôi đã quyết định rằng tôi muốn thêm các dòng trống sau mỗi dòng. Một số phương pháp khác nhau ngay lập tức nhảy vào tâm trí của tôi. Chúng tôi có thể làm điều đó (và do đó nắm lấy thất bại). Chúng tôi có thể ghi lại một macro như thế qqo<ESC>jq
và lặp lại nó nhiều lần.
Hai phương pháp khác dường như rõ ràng hơn với tôi vào thời điểm đó.
Đầu tiên, tôi nghĩ rằng tôi sẽ phát :norm
lệnh o
trên mỗi dòng. Thế là tôi chạy :%norm o
. Nhưng điều thực sự xảy ra là chúng ta nhận được 5 dòng trống, tiếp theo là các dòng không tách rời như trên. Tôi giải thích điều này có nghĩa là %norm
, vim thực sự chọn ra thông báo đưa ra lệnh bình thường sau trên năm dòng đầu tiên của tệp năm dòng này . Các o
lệnh tạo ra một dòng sản phẩm mới và vim là "câm" theo nghĩa là nó tham chiếu bởi số dòng và không thực sự bởi một số nhận dạng khác.
Chà, tôi đã xấu hổ. Chắc chắn rồi. Tôi đã thử một vài thứ khác để xem liệu tôi có thể làm cho phương pháp trên hoạt động được không, nhưng than ôi, tôi không thể. Vì tò mò, tôi đã thử phương pháp áp dụng đại chúng yêu thích khác của mình. Điều này dẫn tôi đến thử :g/^/norm o
. Thật ngạc nhiên, điều này chỉ hoạt động tốt! Vì vậy, trong mắt tôi, dường như vim không "câm" ở đây theo cùng một cách như trên và các dòng tham chiếu không chỉ là số dòng.
Chính xác thì điều gì đang xảy ra vậy?
:%s/$/\r/
, hoặc như thế này ::%s/\n/\r\r/
. Điều đáng nói là các dòng mới có thể được khớp với\n
, nhưng phải được viết như\r
trong các giá trị thay thế.