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.
:h fold-expr
dan:h 'fdm'
git
Anda bahkan mungkin dapat menggunakan kait untuk membuat perubahan berlaku secara transparan.