Lampirkan paragraf dengan tag <p> di vim

4

Saya mencoba membuat pemetaan untuk melampirkan paragraf yang dipilih secara visual di

tag:

vnoremap <silent> _p <Esc>`>a</p><Esc>`<i<p> <Esc>: '<,'> s / \ n \ {2,} / <\ / p> \ r \ r <p> / g <CR>

Sayangnya, pemetaan ini selalu menambahkan yang tidak diinginkan </p>\r\r<p>pada akhir pemilihan (yaitu di belakang </p>ditambahkan di belakang karakter terakhir dalam langkah 1).

Pemilihan tidak diakhiri dengan double linebreak, sehingga polanya tidak cocok. Apa yang saya lakukan salah?

Dari Answer

Terima kasih, Romain - Saya telah menginstal plugin surround, tetapi tidak membantu ketika blok yang dipilih berisi beberapa paragraf. Pemetaan di atas digunakan untuk kasus ini, bukan untuk melampirkan satu paragraf.

Pemetaan saya pertama-tama menambahkan </p> ke akhir, kemudian <p> ke awal pemilihan, setelah itu harus mengganti setiap kemunculan dua atau lebih linebreak dengan kombinasi tag pembuka dan pembuka yang sesuai.

Saya masih tidak mengerti mengapa pola penggantian diterapkan pada akhir seleksi, yang tidak pernah terdiri dari double linebreak.

janeden
sumber
Harap tinjau FAQ. Ini bukan forum. Silakan gunakan komentar untuk membalas jawaban atau memperbarui pertanyaan Anda dengan informasi lebih lanjut.
BinaryMisfit

Jawaban:

0

Ini tidak benar-benar disayangkan karena itulah yang Anda minta dengan jelas dengan :'<,'>s/\n\{2,}/<\/p>\r\r<p>/g<CR>bagian itu.

Blok yang dipilih secara visual tertutup sempurna <p></p>tepat sebelum :.

Apakah Anda tahu tentang plugin surround ? Memecahkan ini dan masalah lainnya dengan indah. Plugin ini adalah suatu keharusan ketika mengedit HTML.

romainl
sumber
0

Setelah membaca dokumentasi pada \% V lebih dekat, saya dapat menjawab pertanyaan itu sendiri:

Untuk memastikan seluruh pola ada di dalam area Visual masukkan \% V di awal dan akhir pola

Jadi pemetaan saya perlu diubah menjadi

vnoremap <silent> _p <Esc>`>a</p><Esc>`<i<p> <Esc>: '<,'> s / \% V \ n \ {2,} \% V / < \ / p> \ r \ r <p> / ge <CR>: nohl <CR>

Saya minta maaf atas penelitian yang tidak patut sebelum memposting pertanyaan saya.

janeden
sumber