Dari pertanyaan Bagaimana cara mengganti karakter untuk baris baru di Vim? . Anda harus menggunakan \ r saat mengganti teks untuk baris baru, seperti ini
:%s/%/\r/g
Tetapi ketika mengganti akhir baris dan baris baru untuk karakter, Anda dapat melakukannya seperti:
:%s/\n/%/g
Bagian mana dari manual yang mendokumentasikan perilaku ini, dan apa alasan di baliknya?
%
gunanya saat mencari dan mengganti?:s
hanya akan menerapkan substitusi ke baris saat ini.:%s
membuatnya mengatasi seluruh file. Lebih banyak .Jawaban:
Dari dokumen vim pada pola :
sumber
Dari http://vim.wikia.com/wiki/Search_and_replace :
sumber
:h :s%
, terutama paragraf terakhir. (via:h :s
)Aspek lain untuk ini adalah bahwa
\0
, yang secara tradisional NULL, dianggaps//\0/
berarti "pola yang cocok secara keseluruhan". (Yang, omong-omong, berlebihan dengan, dan lebih lama dari,&
).\0
maksudNULL
, jadi Anda gunakan\n
\n
maksud\n
, jadi Anda gunakan\r
.\r
maksud\r
, tapi saya tidak tahu siapa yang ingin menambahkan char itu dengan sengaja.—☈
sumber
\n
memiliki arti yang berbeda dalam mencari dan mengganti pola. Jawaban yang fantastis.:help NL-used-for-Nul
sumber
Pertama-tama, buka
:h :s
untuk melihat bagian "4.2 Pengganti" dokumentasi tentang "Ubah". Inilah yang diterima perintah:Perhatikan deskripsi tentang
pattern
danstring
Jadi sekarang Anda tahu bahwa pola pencarian dan pola penggantian mengikuti aturan yang berbeda. Jika Anda mengikuti tautan
|pattern|
, itu akan membawa Anda ke bagian yang menjelaskan seluruh pola regexp yang digunakan di Vim.Sementara itu,
|sub-replace-special|
membawa Anda ke subbagian "4.2 Substitute", yang berisi pola-pola substitusi, di antaranya adalah\r
untuk line break / split.(Cara pintas ke bagian manual ini adalah
:h :s%
)sumber