Berikut ini adalah kasus penggunaan saya:
Saya punya banyak kode yang karena penegakan gaya kami menulis baris baru setelah dan sebelum masing-masing kurung buka dan tutup (masing-masing).
Contoh:
function func(args) {
statement 1;
statement 2;
if (condition) {
statement 3;
}
}
Meskipun ini bagus dan mudah dibaca, saya menganggap ini sebagai pemborosan ruang yang layak-sumpah serapah, tetapi rekan satu tim saya tidak setuju dengan saya. Pada dasarnya ini adalah bagaimana kami memeriksa kode kami dan hanya itu.
Saya berpikir bahwa mungkin saya dapat menggunakan fitur Vim untuk membantu saya menyimpan layar real-estate, sementara masih memungkinkan saya untuk menulis kode dengan cara verbose. Saya tidak keberatan mengetiknya, saya hanya ingin penggunaan ruang yang lebih efisien. Kupikir mungkin aku bisa membuat Vim secara otomatis menutup jalur kosong yang serampangan.
Saya merasa agak sulit untuk mengatur ini menggunakan aturan sintaksis karena apa pun yang saya tulis tampaknya bertentangan dengan aturan sintaksis yang ada, tetapi apa yang saya putuskan untuk dilakukan sebagai upaya pertama adalah menulis aturan-aturan ini yang tidak akan bertabrakan:
syntax match aaaaaaaaa "\vabcd" conceal cchar=A
syntax match bbbbbbbbb "\vef\ngh" conceal cchar=B
Aturan kedua di sini dekat dengan apa yang saya inginkan, yang untuk case braket terbuka adalah sesuatu seperti /\v\{(\n\s*){2,}
: cocokkan braket-terbuka dengan angka lebih besar atau sama dengan 2 dari baris baru diikuti hanya dengan spasi kosong.
Apa yang terjadi di dalam vim adalah sebagai berikut:
Jika saya mengetikkan
abcd
garis, itu disembunyikanA
seperti yang diharapkan.Jika saya mengetik
ef
di satu baris dangh
di baris berikutnya, KEDUA baris menjadi tersembunyi denganB
.
Saya benar-benar berharap dua garis itu ef\ngh
akan disembunyikan menjadi satu baris sehingga saya dapat menghemat ruang buffer vertikal dengan cara ini.
Tapi saya melihat sekarang bahwa itu mungkin masalah detail implementasi Vim. Garis runtuh adalah masalah yang harus dipecahkan oleh kode lipat, mungkin hanya di luar jangkauan sejauh yang disembunyikan.
Jadi saya bertanya-tanya apakah masih ada cara untuk melakukan apa yang ingin saya lakukan. Mungkin menggunakan spidol lipat entah bagaimana? Masalahnya adalah bahwa saya hanya perlu melipat spasi kosong.
git
Anda bahkan mungkin dapat menggunakan kait untuk membuat perubahan berlaku secara transparan.:h fold-expr
dan:h 'fdm'
Jawaban:
Dimungkinkan untuk menggunakan lipatan untuk menyembunyikan garis kosong tambahan. Berikut ini cara melakukannya:
Akan terlihat seperti ini:
Seperti yang Anda lihat tidak ada penyorotan sintaks pada garis terlipat, mungkin masih ada sesuatu yang lebih lumayan daripada banyak baris kosong yang tidak perlu. Anda juga dapat mengaktifkan dan menonaktifkan lipatan dengan zicara pintas jika mereka menghalangi Anda.
Lipatan bukan topik kecil dan Vim memiliki file bantuan terpisah . Opsi terkait juga ditautkan di sana.
Perilaku terperinci kursor dan pencarian dapat dikontrol melalui
'foldopen'
, yang dikombinasikan dengan'foldclose'
menentukan kapan lipatan akan dibuka dan ditutup secara otomatis untuk Anda.sumber
Pertama, itu gaya penegakan yang menyebalkan dan Anda memiliki simpati. Alih-alih menyembunyikan bagaimana membuat pemetaan atau fungsi (seperti yang ditunjukkan di bawah) untuk menghapus baris yang tidak perlu sebelum mengedit dan menambahkannya ketika Anda sudah selesai? sesuatu di sepanjang garis:
Ide dasarnya dimulai, hapus baris kosong saat dibaca dan ganti saat menulis, jangan coba-coba tetapi saya merasa ini dapat ditambahkan sebagai autocmd seperti:
sumber