2012-11-02 36 views
29

मैं ज़ूमविन का उपयोग करता था: https://github.com/vim-scripts/ZoomWin विम में एक और एकाधिक विंडो के बीच टॉगल करने के लिए। लेकिन इस प्लगइन में एक बड़ा मुद्दा है। जब मैं एकाधिक विंडोज़ (लंबवत विभाजन) को पुनर्स्थापित करने की कोशिश कर रहा हूं तो लगभग 2-4 सेकंड देरी होती है।ज़ूमविन की तुलना में विम में विंडो ज़ूम करने का बेहतर तरीका है?

क्या आप जानते हैं कि उस अंतराल से कैसे बचें? या शायद इसके लिए बेहतर समाधान है।

संस्करण 25 हल समस्या: https://github.com/regedarek/ZoomWin

+0

अंतराल ज़ूमविन को मेरे लिए नो-गो बनाता है। – arcseldon

+0

नीचे बेनक उत्तर में perf है। जरूरत है। – arcseldon

उत्तर

42

मैं किसी भी प्लगइन के बिना विम का उपयोग करने की कोशिश करता हूं क्योंकि जब मैं किसी अन्य सिस्टम पर काम करता हूं तो मैं उन पर भरोसा नहीं करना चाहता हूं। यह एक ही मुद्दे पर अब आ रहा है, मैं कुछ 'बेहतर तरीके' (वैकल्पिक तरीकों) के रूप में ओ पी द्वारा अनुरोध प्रस्ताव कर सकते हैं:

  • c-w-| खिड़की पर लेने के लिए (यदि vsplits का उपयोग)। बहाल करने के लिए c-w-=। क्षैतिज विभाजन के लिए c-w-_
  • अन्य विंडो बंद करें, जिससे वर्तमान एक पूर्णस्क्रीन बन जाए। स्प्लिट और फिर से खुला बफर से यदि उपलब्ध
  • उपयोग tmux बहाल करने और वर्तमान फलक

मैं अपने कथित व्यावहारिकता के क्रम में इन सूचीबद्ध किया है के लिए पूर्ण स्क्रीन के बीच स्विच करने vim, c-b-z के कई उदाहरण चलाने के लिए। एक निश्चित प्लगइन के साथ अनुभव निश्चित रूप से बेहतर होगा, लेकिन यह हमेशा एक विकल्प नहीं है।

12

ZoomWin संस्करण 24 खिड़की-स्थानीय चर की शुरुआत की बचत। जब मैंने इसे आजमाया है, तो मैंने प्रदर्शन को अस्वीकार्य पाया, शायद मैंने स्थापित कई अन्य प्लगइन्स और जो विभिन्न ईवेंट हैंडलर स्थापित करते हैं।

मैं प्लगइन लेखक के लिए अपने मुद्दों की रिपोर्ट की है और उन्होंने उत्तर दिया कि ZoomWin की

v25a छ है: zoomwin_localoptlist और noautocmd सामान।

तो, या तो संस्करण 23 पर वापस लौट रहा है (जो मैंने किया था) प्रयास करें, या उल्लेख सेटिंग के साथ नवीनतम संस्करण की कोशिश http://drchip.org/astronaut/vim/index.html#ZOOMWIN

+3

धन्यवाद! संस्करण 25 उत्कृष्ट काम करता है। मैंने अभी अपने जीथ्यूब खाते में नवीनतम संस्करण को धक्का दिया। https://github.com/regedarek/ZoomWin – tomekfranek

+0

हां, मैंने अभी v25d के साथ प्रयास किया है, और, हालांकि v23 जितना तेज़ नहीं है, मेरे पुराने लैपटॉप पर देरी ~ 200 एमएस है, जो मुझे लगता है कि मैं साथ रह सकता हूं। –

+0

क्या मूल लेखक अब इसे बनाए रखता है? क्या आपकी अनुमति है? –

28

से बंद कर दिया एक simple alternative (पर्याप्त है कि तुम क्या जरूरत पर निर्भर करता है हो सकता है):

" Zoom/Restore window. 
function! s:ZoomToggle() abort 
    if exists('t:zoomed') && t:zoomed 
     execute t:zoom_winrestcmd 
     let t:zoomed = 0 
    else 
     let t:zoom_winrestcmd = winrestcmd() 
     resize 
     vertical resize 
     let t:zoomed = 1 
    endif 
endfunction 
command! ZoomToggle call s:ZoomToggle() 
nnoremap <silent> <C-A> :ZoomToggle<CR> 
+0

यह वास्तव में बहुत अच्छा है!ध्यान दें कि आप अगर आप पहले से tmux के साथ इस संयोजन का उपयोग कर रहे कुछ और करने के लिए '' पुन: मैप की जरूरत हो सकती =) – Abdo

+1

@Abdo: वास्तव में, मैं इसे '' से मैप किया गया के बाद से मैं '' tmux के लिए उपयोग ;-) – BenC

+0

हाहा, अच्छा! :-) मैंने इसे ' ई' पर मैप किया क्योंकि मेरे पास मेरे ओएसएक्स में विंडोज़ का विस्तार करने के लिए मेरे शॉर्टकट के रूप में 'cmd shift e' है) – Abdo

2

एक और आसान तरीका :tab split है। उलझन यह है कि यह वर्तमान टैब के लेआउट को नहीं बदलता है। नकारात्मकता यह है कि इसे टैब समर्थन के लिए विम 7.0 या ऊपर की आवश्यकता होती है।

nnoremap <leader>t :call TabToggle()<cr> 
function! TabToggle() 
    if tabpagewinnr(tabpagenr(), '$') > 1 
    " Zoom in when this tab has more than one window 
    tab split 
    elseif tabpagenr('$') > 1 
    " Zoom out when this tab is not the last tab 
    if tabpagenr() < tabpagenr('$') 
     tabclose 
     tabprevious 
    else 
     tabclose 
    endif 
    endif 
endfunction