Katakanlah saya memiliki file yang sangat sederhana berikut ini
a
b
c
d
e
dan saya telah memutuskan bahwa saya ingin menambahkan baris kosong setelah setiap baris. Beberapa metode yang berbeda segera melompat ke pikiran saya. Kita mungkin melakukannya (dan dengan demikian menerima kegagalan). Kami mungkin merekam makro seperti qqo<ESC>jq
dan mengulanginya beberapa kali.
Dua metode lain tampak lebih jelas bagi saya pada saat itu.
Pertama, saya pikir saya akan mengeluarkan :norm
perintah o
di setiap baris. Jadi saya lari :%norm o
. Tapi yang sebenarnya terjadi adalah kita mendapatkan 5 baris kosong, diikuti oleh baris yang tidak terpisahkan seperti di atas. Saya menafsirkan ini berarti bahwa dengan %norm
, vim benar-benar mengambil pesan mengeluarkan perintah normal berikut pada lima baris pertama dari file lima baris ini . The o
perintah menciptakan baris baru dan vim adalah "bodoh" dalam arti bahwa itu referensi oleh nomor baris dan tidak benar-benar oleh beberapa pengenal lainnya.
Yah, saya malu. Tentu. Saya mencoba beberapa hal lain untuk melihat apakah saya dapat membuat metode di atas berhasil, tetapi sayangnya, saya tidak bisa. Karena penasaran, saya mencoba metode mass-apply favorit saya yang lain. Ini membuat saya mencoba :g/^/norm o
. Yang mengejutkan saya, ini bekerja dengan baik! Jadi bagi saya, sepertinya vim tidak "bodoh" di sini dengan cara yang sama seperti di atas dan mereferensikan baris dengan lebih dari sekedar nomor baris.
Apa yang sebenarnya terjadi?
:%s/$/\r/
, atau seperti ini::%s/\n/\r\r/
. Yang perlu diperhatikan adalah bahwa baris baru dapat dicocokkan dengan\n
, tetapi harus ditulis sebagai\r
nilai pengganti.