Saat ini saya sedang menulis banyak teks biasa (dan LaTeX dengan format minimal dalam paragraf), dan alangkah baiknya jika saya dapat mengatur vim untuk menjaga setiap kalimat (untuk kesederhanaan, teks diakhiri dengan '.', '!' , atau '?'; itu adalah tanda baca penghentian yang diikuti oleh spasi untuk menghindari pemutusan pada angka desimal) pada barisnya sendiri sehingga VCS diffs akan lebih berguna.
Minimal, saya ingin gq
memformat teks dari:
He lay flat on the brown, pine-needled floor of the forest, his chin on his
folded arms, and high overhead the wind blew in the tops of the pine trees.
The mountainside sloped gently where he lay; but below it was steep and he
could see the dark of the oiled road winding through the pass. There was a
stream alongside the road and far down the pass he saw a mill beside the
stream and the falling water of the dam, white in the summer sunlight.
Untuk:
He lay flat on the brown, pine-needled floor of the forest, his chin on his folded arms, and high overhead the wind blew in the tops of the pine trees.
The mountainside sloped gently where he lay; but below it was steep and he could see the dark of the oiled road winding through the pass.
There was a stream alongside the road and far down the pass he saw a mill beside the stream and the falling water of the dam, white in the summer sunlight.
Tapi alangkah baiknya jika vim juga akan melakukan pemformatan ini saat saya mengetik (seperti halnya dengan reflow bandwidth). Apakah ini mungkin?
Solusi saya saat ini adalah bergabung dengan paragraf J
, kemudian jalankan :'<,'>s/\. /.\r/g
yang cukup bagus karena ada beberapa tanda seru dan tanda tanya, tetapi akan jauh lebih baik jika saya bisa membuat gq sedikit lebih pintar.
sumber
)
dan masukkan baris baru; ulangi sampai Anda mencapai akhir rentang." Maka itu mungkin akan menerapkan aturan indentasi. Tapi Vim-fu saya terlalu lemah untuk itu. :)e.g. blah
, danBlah et al. 2018
yang sedikit mengganggu. Anda dapat mencocokkan pola seperti itu dengan sesuatu seperti's/\(e\.g\|\<al\)\@<![.!?]\zs /\r/g'
. Cukup tambahkan lebih banyak pola ke grup pertama untuk menghindari hal-hal lain yang tidak ingin Anda bagi. Kalau tidak, ini sangat berguna, terima kasih. Saya belum pernah menemukangq
sebelumnya, dangqip
sangat berguna untuk memformat teks yang telah rusak oleh editor teks rekan penulis.Anda dapat mengatur beberapa peta dan perintah otomatis:
Kemudian cukup atur jenis file ke customtxt atau panggil
AddSentenceMaps
fungsi secara manual.sumber
Saya ingin menambahkan pemikiran saya tentang masalah ini. Biasanya orang menginginkan fitur semacam ini karena melompati garis yang dibungkus ketika orang menavigasi kode dengan
j
dank
perintah yang merupakan perilaku default Vim. Untuk navigasi melalui garis terbungkus saya gunakangj
- pindah ke bawah dangk
- pindah ke atas. Juga ada kemungkinan remap standarj
dank
perintah pada rekan-rekan g-prefixed, tapi IMHO itu akan berlebihan.sumber
j
dank
kegj
dangk
ketika Anda menginginkannya ;-)Itu tidak menjawab pertanyaan spesifik Anda tentang memformat ulang, tetapi 'set wrap' bersama dengan 'set linebreak' dapat membuat mengedit garis panjang jauh lebih menyenangkan. Gabungkan ini dengan gj dan gk untuk bernavigasi di dalam garis yang terbungkus. Saya memetakan panah atas dan bawah ke gj dan gk masing-masing sehingga saya memiliki pilihan antara bergerak ke atas dan ke bawah garis nyata atau garis visual. Suka bijaksana untuk Home / End to g0 / g $.
sumber