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
:
map <F10> :echo "hi<" . synIDattr(synID(line("."),col("."),1),"name") . '> trans<'
\ . synIDattr(synID(line("."),col("."),0),"name") . "> lo<"
\ . synIDattr(synIDtrans(synID(line("."),col("."),1)),"name") . ">"<CR>
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:
hi<vimLineComment> trans<vimLineComment> lo<Comment>
Saya pikir itu berarti bahwa grup sorotan untuk komentar vim adalah vimLineComment
dan bahwa itu terhubung dengan Comment
. Jadi kami ingin menyembunyikan teks yang ditangani oleh grup sorotan vimLineComment
(atau Comment
).
Untuk mencapai ini, kita bisa menggunakan fitur penyembunyian yang ditambahkan dalam vim 7.3 ( :help conceal
).
:syntax match vimLineComment "^\".*" conceal containedin=ALL cchar=>
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:
:set conceallevel=2
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
:
augroup hide_text
autocmd!
autocmd FileType vim :set conceallevel=2 | :syntax match vimLineComment "^\".*" conceal containedin=ALL cchar=>
augroup END
Akhirnya, kami menambahkan pemetaan untuk mengganti nilai conceallevel
opsi (antara 2 dan 0; 2 = disembunyikan, 0 = ditampilkan):
nnoremap <leader>h :<c-u>if (&conceallevel==2) \| set conceallevel=0 \| else \| set conceallevel=2 \| endif<cr>
Hasilnya adalah bahwa teks harus ditampilkan / disembunyikan ketika kita menekan <leader>h
.
Anda juga dapat mengubah warna karakter pengganti:
highlight Conceal ctermfg=<code color> guifg=#<code color>
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:
setlocal concealcursor=ncv
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.
function! FoldingTitle()
if (v:foldlevel>1)
let line = repeat(' ', &sw * (v:foldlevel-1)).'>'
else
let line = '|'
endif
return line
endfunction
set foldtext=FoldingTitle()
set fillchars+=fold:\
set foldcolumn=3 " optional
highlight FoldColumn ctermfg=<code color> guifg=#<code color> ctermbg=<code color> guibg=#<code color> "optional
highlight Folded ctermfg=<code color> guifg=#<code color> ctermbg=<code color> guibg=#<code color> "optional
Dalam kode ini kami menyesuaikan judul lipatan dengan memberikan nilai FoldingTitle()
pada foldtext
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:
set fillchars+=fold:\
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.
set foldcolumn=3 " optional
highlight FoldColumn ctermfg=<code color> guifg=#<code color> ctermbg=<code color> guibg=#<code color>
highlight Folded ctermfg=<code color> guifg=#<code color> ctermbg=<code color> guibg=#<code color>