Saya ingin dapat menyembunyikan garis-garis tertentu di buffer saya agar tidak muncul sama sekali (dan dapat beralih melihat mereka). Saya menemukan pertanyaan serupa , tetapi mereka tidak menyelesaikan masalah saya. Saya tidak ingin menggunakan lipatan untuk ini.
Apa yang sebenarnya saya inginkan?
Ketika saya membuka dokumen, saya ingin Vim tidak membaca dalam baris komentar. Seharusnya berperilaku seolah-olah garis-garis ini tidak ada sama sekali dalam dokumen, dengan hanya satu pengecualian: Saya memerlukan indikator visual (misalnya di kolom tambahan di samping) yang memberitahu saya di sini adalah komentar yang tidak ditampilkan.
Setelah menekan kombinasi tombol tertentu, saya ingin semua komentar muncul (yaitu perilaku Vim normal).
Saya ingin dapat memodifikasi dokumen dengan komentar yang tidak ditampilkan. Setelah menyimpan, seluruh dokumen disimpan dengan komentar (mereka selalu disimpan 1 baris di atas teks yang berada di bawahnya di awal).
Mengapa saya menginginkan ini?
Ini mengurangi kurang dan terlihat lebih menyenangkan secara visual. Ambil .vimrc
contoh - Anda dapat memiliki semua pengaturan dengan baik di bawah satu sama lain. Jika Anda ingin mengubah sesuatu, atau tidak yakin mengapa Anda mengaturnya dengan cara ini, matikan saja komentar Anda.
Jawaban:
Saya tidak tahu bagaimana mencapai apa yang Anda inginkan, hanya sebagian.
Anda ingin menyembunyikan beberapa teks di dalamnya
~/.vimrc
(misalnya).Pertama, kita perlu tahu grup sorotan mana yang menangani teks yang ingin Anda sembunyikan. Tambahkan pemetaan ini ke
~/.vimrc
:Saya sudah mengambilnya dari sini .
Selanjutnya letakkan kursor Anda pada beberapa teks yang ingin Anda sembunyikan, misalnya komentar. Lalu pukul
F10
.Nama grup sorotan akan muncul di baris perintah.
Pada sistem saya, hasilnya adalah:
Saya pikir itu berarti bahwa grup sorotan untuk komentar vim adalah
vimLineComment
dan bahwa itu terhubung denganComment
. Jadi kami ingin menyembunyikan teks yang ditangani oleh grup sorotanvimLineComment
(atauComment
).Untuk mencapai ini, kita bisa menggunakan fitur penyembunyian yang ditambahkan dalam vim 7.3 (
:help conceal
).Baris ini memberitahu vim untuk mencari teks yang grup sorotnya
vimLineComment
dan yang cocok dengan regex^\".*
(awal baris (^
) diikuti oleh tanda kutip ganda (\"
) diikuti oleh teks apa pun (.*
)), dan untuk menyembunyikan dan menggantinya di mana saja ia ditemukan (containedin=ALL
) dengan karakter>
(cchar=>
).The
conceal
Atribut sintaks akan menyembunyikan teks yang kita inginkan, kecuali kursor berada di atasnya.Selanjutnya, kami memberi tahu vim untuk menyembunyikan teks sepenuhnya kecuali ia memiliki karakter pengganti khusus yang ditentukan:
Ada 4 nilai yang mungkin untuk opsi ini dengan 4 efek berbeda (lihat
:help conceallevel
).Karena kami tidak ingin mengetikkan perintah itu setiap kali, kami menambahkan perintah otomatis di
~/.vimrc
:Akhirnya, kami menambahkan pemetaan untuk mengganti nilai
conceallevel
opsi (antara 2 dan 0; 2 = disembunyikan, 0 = ditampilkan):Hasilnya adalah bahwa teks harus ditampilkan / disembunyikan ketika kita menekan
<leader>h
.Anda juga dapat mengubah warna karakter pengganti:
Dan Anda dapat memilih dalam mode mana komentar akan ditampilkan. Misalnya, jika Anda ingin itu hanya ditampilkan ketika Anda berada pada jalurnya dalam mode insert:
Namun saya tidak tahu bagaimana cara menutup semua garis tersembunyi seperti yang dilakukan fitur lipat, maaf.
Edit : solusi lain yang mungkin.
Anda menyimpan pengaturan lipatan untuk menutup garis yang tidak ingin Anda lihat, dan Anda menyembunyikan judul lipatan, sehingga tidak mengalihkan perhatian Anda.
Dalam kode ini kami menyesuaikan judul lipatan dengan memberikan nilai
FoldingTitle()
padafoldtext
opsi. Itu berarti bahwa kita dapat mengubah bagaimana lipatan akan melihat melalui fungsi ini.FoldingTitle()
cukup kembalikan simbol sehingga Anda tahu ada lipatan (>
didahului oleh beberapa spasi berulang, atau|
tergantung pada lipat tingkat).Kemudian kita mendefinisikan karakter spasi sebagai karakter yang digunakan untuk mengisi ruang kosong di baris:
Jangan lupa spasi setelah backslash.
Akhirnya kita mendefinisikan kolom (yang lebarnya 3) yang akan ditampilkan di sisi jendela dan yang akan menunjukkan lipatan terbuka dan tertutup. Kami juga menyesuaikan warna kolom lipat serta warna judul lipatan. Masing-masing dari 3 baris ini adalah opsional.
sumber
Folded
elemen untuk lipatan normal saya perlu warna, jadi satu-satunya pilihan adalah mengisi teks lipat untuk garis yang ingin saya sembunyikan dengan spasi. Namun, saya masih akan melihat bagian yang digarisbawahi serta latar belakang yang berbeda untukFolded
objek - dan saya tidak dapat mengubahnya, karena saya membutuhkannya agar lipatan normal saya berfungsi.solusi yang mungkin adalah menggunakan bilah lipat minimalis yang saya gunakan karena saya tidak menemukan solusi yang sama, di bawah ini saya meletakkan daftar perintah untuk membuat bilah lipat minimalis yang dapat Anda gunakan untuk komentar tersembunyi, di setiap perintah saya menulis apa yang melakukannya :
atur foldtext = '+' "untuk menampilkan referensi teks + dalam untuk lipatan
hai Dilipat ctermbg = NONE "ubah bilah lipatan warna tanpa hasil
: set fillchars = vert: \ |, lipat: \ "(beri spasi) tidak ada tempat ----- di bilah lipat
penggunaan opsional untuk komentar yang hilang
:Hai! tautan Komentar Abaikan
gunakan kembali
:Hai! tautan Komentar Komentar
sumber