winheight()
dan winwidth()
kembalikan jumlah kolom / garis di jendela saat ini. Yang saya cari adalah sesuatu yang lebih dekat dengan tinggi dan lebar sebenarnya dari area pengeditan, atau area yang ditampilkan jika dijalankan di terminal. Masalah dengan winheight()
dan winwidth()
apakah rasio aspek yang dihitung dari nilai-nilai ini tidak berhubungan dengan rasio aspek yang sebenarnya.
:echo winwidth('%') winheight('%') winwidth('%') * 1.0 / winheight('%')
104 51 2.039216
Tangkapan layar area buffer berukuran 936x918 piksel, memberikan rasio aspek yang ditampilkan 1.019608
. Saya pikir saya bisa mendapatkan nilai aktual dengan menggunakan ukuran font, tapi bagaimana caranya?
Ini adalah tindak lanjut dari Bagaimana saya bisa membuat Vim membuka bantuan dalam pemisahan vertikal? . Saya mencoba mengadaptasi solusi Nobe4 .
cnoreabbrev h <C-r>=(&columns >= 160 && getcmdtype() ==# ':' && getcmdpos() == 1 ? 'vertical botright help' : 'h')<CR>
.==#
operator yang:h
membantu menjernihkan saya sebenarnya mengerti seluruh perintah panik. Apakah itu membuat saya seorang ahli Vim? Harus seperti itu. Perlu keluar lebih banyak.Jawaban:
Perhitungan Anda condong karena rasio aspek setiap sel vertikal.
Sebagai contoh pada Terminal.app, dengan font 23pt dan spasi karakter default, setiap sel terminal memiliki lebar 7px dan tinggi 15px dengan total 728x765px :
Anda tidak dapat mengambil ukuran font dari dalam Vim tanpa menggunakan perintah eksternal atau cara berkomunikasi dengan terminal, yang bisa menjadi sangat berat. Jelas, ini berbeda di Gvim berkat
'guifont'
.Jika Anda berhasil melakukannya, Anda masih perlu cara untuk mengurangi ukuran sel yang dapat bervariasi tergantung pada program terminal jika tidak ada standar . Saya hanya memeriksa iTerm 2 yang untungnya memiliki hasil yang sama.
Karena itu saya akan memilih solusi statis. Saya mencangkokkan cek lebar minimum untuk potongan ini yang dapat Anda tempatkan di
plugin/help.vim
:Jika jendela cukup besar untuk menyimpan 80 kolom buffer saat ini, split bantuan sempit dibuka di sebelah kanan, jika tidak, split dibuka di bawah. Anda dapat menyesuaikan arah split dengan
:vertical
.sumber