Bagaimana saya bisa memecah paragraf menjadi kalimat dengan Vim?

4

Dengan memecah kalimat yang saya maksudkan bahwa setiap kalimat baru harus dimulai dengan baris baru.

Bagaimana cara mengulangi )i<CR><Esc>hingga akhir paragraf }? ( <CR>= Enter)

Jika saya membuat makro )i<CR><Esc>sebagai "q", dapatkah saya menjalankannya sampai akhir paragraf?

kirill_igum
sumber

Jawaban:

2

Anda dapat melakukan pencarian dan ganti. Saya baru saja menulis ini. Ini bekerja, tetapi Anda mungkin bisa melakukan yang lebih baik.

:%s/\v[ ]*([^\.]*\.)/\1\r/g
Dan Loewenherz
sumber
2
vap:s/\. /.^M/g
  • vap pilih paragraf Anda saat ini
  • :s/\. /.^M/gganti semua periode diikuti oleh spasi dengan periode diikuti oleh baris baru. (Perhatikan bahwa untuk mendapatkan baris literal ( ^M) di ekspresi pengganti, Anda harus mengetik <CTRL-V><CR>.)
chisophugis
sumber
0

Solusi saya, mulai dalam mode dan tipe normal:

vip:'<,'>s/\n/ /|'<,'>s/\([.?!]\)\s/\1\r/g

Perhatikan bahwa '<,'> pertama akan secara otomatis dimasukkan pada baris perintah ketika Anda menekan tombol ":" setelah mengetik " vip" dalam mode normal.

Pengganti pertama menggabungkan paragraf menjadi satu baris, lalu "|" karakter membatasi satu detik: -perintah dalam baris perintah yang sama, dan kali ini " '<,'>" harus diketik dengan tangan. Perintah pengganti kedua menggantikan periode, tanda tanya, atau tanda seru diikuti dengan spasi dengan simbol yang cocok dan baris baru.

Ini tidak akan menangkap contoh di mana kalimat berakhir dengan periode / excalmation / pertanyaan dan karakter kutipan, dll. Tetapi polanya dapat diperluas untuk melakukannya.

Heptite
sumber
0

Saya menemukan bahwa ada cara yang sangat mudah untuk melakukan ini menggunakan vim-macros.

  • Pertama di normal modetekan q, lalu tombol apa saja, misalkan kunci itu a. Jadi Anda akan melihat sesuatu di bagian bawah sebagai recording @a.
  • Sekarang ikuti urutan tombol sebagai 0)i<cr><esc>qSekarang makro Anda direkam. Ini akan mematahkan paragraf di ..
  • Sekarang, ulangi makro ini berkali-kali dengan menekan N@adalam mode normal, di mana Nada angka.

Catatan : Anda dapat memilih karakter alfanumerik apa pun untuk menyimpan makro Anda daripada a, makro ini melanggar garis di ., Anda dapat memilih kolom apa saja hanya .dengan mengganti dengan Npilihan Anda.

Galilea
sumber