मुझे विम की वास्तविक ऊंचाई और चौड़ाई कैसे मिलेगी?


18

winheight()और winwidth()वर्तमान विंडो में कॉलम / लाइनों की संख्या लौटाएं। मैं जो देख रहा हूँ वह संपादन क्षेत्र में वास्तविक ऊंचाई और चौड़ाई के करीब है, या एक टर्मिनल में चलने पर प्रदर्शित क्षेत्र है। के साथ समस्या यह winheight()और winwidth()है कि पहलू अनुपात की गणना इन मूल्यों से वास्तविक पहलू अनुपात के साथ संपर्क से बाहर है।

:echo winwidth('%') winheight('%') winwidth('%') * 1.0 / winheight('%')
104 51 2.039216

बफ़र क्षेत्र का एक स्क्रीनशॉट आकार 936x918 पिक्सेल है, जिसका प्रदर्शित पहलू अनुपात देता है 1.019608। मुझे लगता है कि मैं फ़ॉन्ट के आकार का उपयोग करके वास्तविक मूल्य प्राप्त कर सकता हूं, लेकिन कैसे?

यह अनुवर्ती है कि मैं ऊर्ध्वाधर विभाजन में विम को खुली मदद कैसे कर सकता हूं? । मैं Nobe4 के समाधान को अपनाने की कोशिश कर रहा हूं ।


3
मुझे नहीं लगता कि आप सादे विम कार्यों के साथ पिक्सेल में आयाम प्राप्त कर सकते हैं। ऊर्ध्वाधर विभाजन में मदद खोलने के लिए, मैं पहलू अनुपात गणनाओं से परेशान नहीं होता, मैं बस लंबवत रूप से विभाजित करता हूं अगर टर्मिनल विंडो पर्याप्त चौड़ा हो cnoreabbrev h <C-r>=(&columns >= 160 && getcmdtype() ==# ':' && getcmdpos() == 1 ? 'vertical botright help' : 'h')<CR>:।
सातो कैटसुरा

1
इस प्रकार @SatoKatsura अधिकांश वेब डेवलपर्स द्वारा निर्धारित परंपरा का पालन करता है, जो यह निर्धारित करने के लिए दस्तावेज़ की चौड़ाई का उपयोग करते हैं कि क्या यह एक मोबाइल है। :(
मुरु

1
वास्तव में नहीं, क्योंकि मैं केवल अपने आप को भड़का रहा हूं। मैंने थोड़ी देर के लिए पहलू अनुपात के साथ खेला और मुझे परिणाम असंतोषजनक लगे। फिर मुझे याद आया कि मेरे पास टर्मिनलों को खोलने के लिए बिल्कुल दो शॉर्टकट हैं, "सामान्य" आकार के लिए, और "विस्तृत" टर्मिनलों के लिए। इसलिए मेरे टर्मिनलों का आकार लगभग हमेशा एक जैसा होता है। YMMV बेशक।
सातो कैटसुरा

@SatoKatsura कि कमांड कुछ गंभीर काला जादू है। मैं बहुत हैरान हूं कि एक तरफ ==#ऑपरेटर के बारे में नहीं जानने से जो :hस्पष्ट करने में मदद करता है, मैं वास्तव में पूरी फ्रिकिंग कमांड को समझता हूं। क्या यह मुझे विम विशेषज्ञ बनाता है? कुछ इस तरह होना चाहिए। और बाहर निकलने की जरूरत है।
स्टीवन लू

जवाबों:


1

104 कॉलम / 51 लाइनें = 2.04

आपकी गणना तिरछी है क्योंकि प्रत्येक कोशिका का पहलू अनुपात लंबवत है।

23. फ़ॉन्ट और डिफ़ॉल्ट वर्ण रिक्ति के साथ Terminal.app पर उदाहरण के लिए, प्रत्येक टर्मिनल सेल की चौड़ाई 7px है और कुल 728x765px के लिए 15px की ऊँचाई :

(104 * 7) / (51 * 15) = 728/765 = 0.95


आप बाहरी आदेशों या टर्मिनल के साथ संचार करने के तरीके के बिना विम के भीतर से फ़ॉन्ट आकार को पुनः प्राप्त नहीं कर सकते, जो कि बहुत भारी हो सकता है। जाहिर है, यह Gvim धन्यवाद करने के लिए अलग है 'guifont'

यदि आप इसे करने का प्रबंधन करते हैं, तब भी आपको एक सेल के आकार को घटाने का एक तरीका चाहिए जो कि टर्मिनल प्रोग्राम के आधार पर भिन्न हो सकता है यदि कोई मानक नहीं है । मैंने केवल iTerm 2 की जाँच की जो सौभाग्य से एक ही परिणाम है।


इसलिए मैं एक स्थिर समाधान का विकल्प चुनूंगा। मैंने इस स्निपेट की न्यूनतम चौड़ाई की जाँच की, जिसे आप यहाँ रख सकते हैं plugin/help.vim:

function! Help(...)
  let l:topic = a:0 ? a:1 : ''
  if winwidth('%') >= 160 " Minimum width
    execute 'vertical botright help' l:topic
    execute 'vertical resize 78'
  else
    execute 'botright help' l:topic
  endif
endfunction

" Use :H to open a vertical or horizontal help split
command! -complete=help -nargs=? H call Help(<f-args>)

यदि विंडो वर्तमान बफर के 80 स्तंभों को रखने के लिए पर्याप्त बड़ी है, तो दाईं ओर एक संकीर्ण सहायता विभाजन खोला जाता है, अन्यथा विभाजन नीचे खोला जाता है। आप के साथ विभाजन दिशा को अनुकूलित कर सकते हैं :vertical

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.