केवल विंडो पूर्ववत करें


24

एक खिड़की में कई विभाजन के साथ एक मामले पर विचार करें। vim पूरी तरह से विंडो को ऊपर ले जाने के लिए वर्तमान विभाजन को "अधिकतम" अधिकतम करने की अनुमति देता है <C-W> o

वहाँ एक तरीका है कि पहले से मौजूद विभाजन को याद करने और क्रियान्वित करने के बाद इस राज्य में वापस जाने के लिए vim हो <C-W> o?

संपादित करें: स्पष्ट करने के लिए, मैं किसी भी तृतीय-पक्ष प्लगइन्स के उपयोग के बिना ऐसा करने का तरीका ढूंढ रहा हूं।


1
मुझे यह उत्तर SO पर प्रासंगिक लगा, लेकिन यदि संभव हो तो मैं एक प्लगइन के बिना इस कार्यक्षमता को प्राप्त करना चाहूंगा।
भार्गव भट

5
कृपया टिप्पणी में इसके बजाय आवश्यकताओं को अपने आप में शामिल करें।
मुरु

क्या यह प्रश्न एक डुप्लिकेट माना जाता है यदि यह किसी अन्य स्टैकएक्सचेंज साइट पर है? stackoverflow.com/q/13194428/1698426
जॉन श्मिट

जवाबों:


14

ऐसा करने का सबसे सरल तरीका संभवत: सत्र फ़ाइलों के साथ है, जो विम स्क्रिप्ट हैं (यह विम स्वचालित रूप से आपके लिए उत्पादन कर सकते हैं) जो पिछले संपादन वातावरण को पुनर्स्थापित करेगा।

आप एक नया सत्र फ़ाइल का उपयोग करके बना सकते हैं :mksession <filename>। तुम्हें पता है, उत्पन्न सत्र स्क्रिप्ट निष्पादित करने से उस सत्र बहाल कर सकते हैं :source <filename>

इस प्रकार, आप एक विंडो को अधिकतम करने से पहले मौजूदा सत्र को बचा सकते हैं और इसे पुनर्स्थापित कर सकते हैं जब आप विंडो को "अनमैक्सिज़्म" करना चाहते हैं।

इसका उपयोग करते हुए, आप पहले से सत्र को बचाने के लिए उपयुक्त विंडोिंग कमांड को फिर से तैयार कर सकते हैं, और सत्र को बहाल करके अंतिम विंडोिंग कमांड को "पूर्ववत" करने के लिए एक नया मैपिंग जोड़ सकते हैं। उदाहरण के लिए:

  • nnoremap <C-w>o :mksession! ~/session.vim<CR>:wincmd o<CR>और इतने सारे विंडो कमांड के लिए जिसे आप समर्थन करना चाहते हैं (देखें :help CTRL-W, बहुत कुछ है)। !मौजूदा सत्र फ़ाइल को अधिलेखित करने से संबंधित रोकता है त्रुटियों।
  • nnoremap <C-w>u :source ~/session.vim<CR> अंतिम विंडो कमांड को "पूर्ववत करें" करने के लिए।

यदि आप विशेष रूप से मजबूत होना चाहते हैं, तो आप सत्र फ़ाइलों को एक स्टैक में सहेजने के लिए फ़ंक्शन के माध्यम से इसे बढ़ा सकते हैं और उन्हें पूर्ण पूर्ववत श्रृंखला प्राप्त करने के लिए बंद कर सकते हैं, हालांकि उस बिंदु पर ट्रैक करने के लिए फ़ंक्शन का एक गुच्छा लिखने के लिए संभवतः यह अधिक कुशल है। विंडो कमांड हिस्ट्री इन मेमोरी ... जिस पॉइंट पर आप संभवत: उन प्लगइन्स को डुप्लिकेट कर रहे हैं जो पहले से ही इस तरह का काम करते हैं।


11

एक अन्य विकल्प अपनी वर्तमान विंडो को एक नए टैब में खोल सकता है, फिर बस टैब बंद कर दें जब आप काम कर रहे हों।

:split(या :spछोटे के लिए) आदेश, एक तर्क के बिना, वर्तमान विभाजन के रूप में ही बफर के साथ एक नया विभाजन खोलने के प्रभाव पड़ता है। :tabआदेश में कई खिड़की से संबंधित आदेशों को चलाने कर सकते हैं, उन्हें एक टैब के बजाय का उपयोग करने के बदलते। इन्हें एक साथ मिलाने :tab spसे वर्तमान बफर के साथ एक नया टैब खुल जाएगा।

उसके बाद, आप के साथ नया टैब बंद कर सकते हैं :qया :tabclose( :tabcछोटे के लिए)।


2

मैं वास्तव में इस परिदृश्य के लिए ZoomWin प्लगइन ( https://github.com/itspriddle/ZoomWin ) का उपयोग करता हूं । दबाने वाला CtrlW- Oदूसरी बार आपके विंडो लेआउट को पुनर्स्थापित करता है।


1
सुझाव के लिए धन्यवाद, लेकिन जैसा कि मैंने अपने प्रश्न में नोट किया था, मैं जानना चाहूंगा कि क्या यह बिना प्लगइन के किया जा सकता है।
भार्गव भट

1
ज़ूम आउट करते समय किसी कारण से यह प्लगइन मेरे लिए धीमा था। किसी और को एक ही मुद्दा रहा है?
shriek

2

जो आप ध्वनियों का वर्णन कर रहे हैं, वह बिल्कुल उस विशेषता की तरह है जो "ज़ूमिंग" के नाम से जाती है। एसओ पर एक महान जवाब पहले से ही है जो इसे बहुत अच्छी तरह से करता है।

EDIT: एसओ से स्पष्ट जवाब, कॉपी और पेस्ट किया गया । मैंने नीचे स्निपेट को अपने .vimrc में डाला और फिर आह्वान किया

:ZoomToggle

मेरे vim कमांड प्रॉम्प्ट में।

" 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>

हालांकि यह लिंक प्रश्न का उत्तर दे सकता है, लेकिन उत्तर के आवश्यक भागों को शामिल करना और संदर्भ के लिए लिंक प्रदान करना बेहतर है। लिंक-केवल उत्तर अमान्य हो सकते हैं यदि लिंक किए गए पृष्ठ बदल जाते हैं।
मुरु

क्यों होता है पतन?
जॉन श्मिट

मैं नहीं। संभवत: जिसने भी इसे हरी झंडी दिखाई।
मूरू

SO से कॉपी-एंड-पेस्ट लिंक करने की तुलना में अधिक उपयोगी नहीं है
23

मैं सहमत हूँ। सबसे उपयोगी चीज मैं क्या कर सकता हूं?
जॉन श्मिट

0

यह पोस्ट पुरानी है, स्वीकृत उत्तर के बारे में चिंता नहीं करता है terminal buffer

sessionट्रिक करने के लिए स्वीकृत उत्तर उपयोग , लेकिन sessionपूरी तरह से बहाल नहीं किया जा सकता है terminal buffer:

                            *terminal-session*
A terminal window will be restored when using a session file, if possible and
wanted.

If "terminal" was removed from 'sessionoptions' then no terminal windows will
be restored.

If the job in the terminal was finished the window will not be restored.
...

टॉम्कडो का जवाब अभी भी काम करता है, <c-w>:tab splitअच्छी तरह से काम करता है terminal buffer। यह एक मानचित्र के योग्य है:

nnoremap <c-w><space> :tab split<cr>
tnoremap <c-w><space> <c-w>:tab split<cr>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.