Bagaimana seseorang dapat membuat fungsi lipat vim - saat menggunakan foldmethod = sintaks - juga menyembunyikan satu baris baru setelah setiap fungsi, jika-lain dan struct (menggunakan Go).
Bagaimana seseorang dapat membuat fungsi lipat vim - saat menggunakan foldmethod = sintaks - juga menyembunyikan satu baris baru setelah setiap fungsi, jika-lain dan struct (menggunakan Go).
Jawaban:
Berikut cara melakukannya untuk C:
/usr/share/vim
) dan salin ke (lagi, di bawah Unix) ~/.vim/syntax
.syntax region cBlock start="{" end="}" transparent fold
menjadi
syntax region cBlock start="{" end="}\(\n\n\)\?" transparent fold
Di sini, yang pertama \n
cocok dengan karakter baris baru segera setelah tanda kurung penutup, yang kedua adalah baris kosong. Ini tidak akan berfungsi jika }
diikuti oleh misalnya komentar: blokir akan tetap dilipat, tetapi baris baru berikut tidak akan.
Saya tidak memiliki file sintaks untuk Buka di sini (sejauh yang saya tahu), tetapi harus bekerja dengan cara yang sama.
Catatan: cara yang lebih fleksibel adalah dengan membuat file baru di ~/.vim/after/syntax
dan hanya mengubah definisi wilayah, tetapi saya tidak berhasil di sini. Hanya menyalin definisi wilayah tidak berfungsi.
Saya tahu ini sudah tua, tetapi juga solusi @ ansgar-esztermann:
syntax clear cBlock
syntax match cBlock1line /.\s*{.\{-}}/ transparent contains=ALLBUT,cBadBlock,cCurlyError,@cParenGroup,cErrInParen,cErrInBracket,cBlockImp
syntax region cBlockImp start=/{/ end=/};\?\(\n\n\)\?/ transparent fold contains=ALLBUT,cBadBlock,cCurlyError,@cParenGroup,cErrInParen,cErrInBracket
dalam ~/.vim/syntax/c.vim
lipatan baris baru (untuk struct
s juga)