विम में ऊर्ध्वाधर विभाजन से क्षैतिज विभाजन तेजी से स्विच करने के लिए


594

आप अपनी वर्तमान खिड़कियों को क्षैतिज विभाजन से ऊर्ध्वाधर विभाजन और विम में इसके विपरीत कैसे स्विच कर सकते हैं?

मैंने ऐसा कुछ समय पहले किया था, लेकिन मैं फिर से चाबी नहीं ढूंढ सका।


2
शायद dwm.vim प्लगइन थोड़े उपयोगी होंगे
ДМИТРИА МАЛИКОВ

जवाबों:


893

विम मेलिंग सूची कहती है (बेहतर पठनीयता के लिए पुन: स्वरूपित):

क्षैतिज रूप से विभाजित करने के लिए दो लंबवत विभाजन खिड़कियों को बदलने के लिए

Ctrl- w t Ctrl-w K

क्षैतिज रूप से लंबवत:

Ctrl- w t Ctrl-w H

स्पष्टीकरण:

Ctrl- w t पहले (topleft) विंडो को करंट बनाता है

Ctrl- w K वर्तमान विंडो को बहुत ऊपर पूर्ण-चौड़ाई में ले जाता है

Ctrl- w H वर्तमान विंडो को बाईं ओर पूरी ऊंचाई तक ले जाता है

ध्यान दें कि टी लोअरकेस है, और के और एच अपरकेस हैं।

इसके अलावा, केवल दो खिड़कियों के साथ, ऐसा लगता है जैसे आप Ctrl- w tभाग को गिरा सकते हैं क्योंकि यदि आप पहले से ही केवल दो खिड़कियों में से एक में हैं, तो इसे चालू करने का क्या मतलब है?


27
इसलिए यदि आपके पास दो खिड़कियां क्षैतिज रूप से विभाजित हैं, और आप निचली खिड़की में हैं, तो आप बस ^ WL का उपयोग करते हैं।
बहुत ज्यादा php

7
.... शक्ति ... मेरा विम-फू आज दोगुना हो गया, धन्यवाद। दिलचस्प ^ w कमांड (बी, डब्ल्यू, आदि) का एक टन है
एलेक्स हार्ट

अच्छा होगा जब NERDTree प्लगइन का उपयोग करते समय यह काम किया जाता है :-)
Eno

3
@ मेरे लिए ठीक काम करता है। बस अपने NERDTree पैनल को स्प्लिट्स को 'रोटेट' करने से पहले बंद कर दें, फिर इसे वापस टॉगल करें। : NERDTreeToggle (मुझे सुविधा के लिए फ़ंक्शन कुंजी पर मैप किया गया है)।
लैम्बर्ट

2
मैंने अपने vim config में कुछ लीडर मैपिंग जोड़े हैं: :nmap <leader>th <C-w>t<C-w>Hऔर:nmap <leader>tk <C-w>t<C-w>K
Ian Marcinkowski

324

Ctrl- wइसके बादH , J, Kया L(राजधानी) वर्तमान विंडो दूर चले जाएँगे left, bottom, topया rightसामान्य कर्सर नेविगेशन क्रमशः की तरह।

निचले मामले के समकक्ष खिड़की को स्थानांतरित करने के बजाय फोकस को स्थानांतरित करते हैं।


5
यह बहुत बेहतर है क्योंकि उपयोगकर्ता hjkl का उपयोग बफ़र्स के बीच जाने के लिए करते हैं।
अफशीन मेहरबानी

30
स्वीकृत उत्तर एक अच्छा है, लेकिन मेरे लिए, यह उत्तर याद रखना आसान है। धन्यवाद!
जॉन कार्टर

Nerdtree के साथ भी बेहतर काम करता है।
16

यह उपसर्ग द्वारा macOS पर मेरे लिए काम करता है Ctrl- w(मुझे नहीं पता कि आपके उदाहरण में ^इसका मतलब Ctrlहै)।
गियोवन्नी बेनुसी

@GOVanniBenussi हां, मुझे लगता ^है कि इसका मतलब है Ctrl
15:11 बजे ma11hew28

47

जब आपके पास दो या अधिक खिड़कियां क्षैतिज या लंबवत रूप से खुलती हैं और उन सभी को स्विच करना चाहती हैं को अन्य अभिविन्यास , तो आप निम्नलिखित का उपयोग कर सकते हैं:

(क्षैतिज पर स्विच करें)

:windo wincmd K

(ऊर्ध्वाधर पर स्विच करें)

:windo wincmd H

यह प्रभावी रूप से व्यक्तिगत रूप से प्रत्येक विंडो पर जा रहा है और उपयोग कर रहा है ^WKया ^WH


31

निम्न पूर्व कमांड किसी भी संख्या में विंडोज़ को फिर से विभाजित करेगी (पुनः):

  • लंबवत रूप से विभाजित करने के लिए (जैसे विंडोज़ के बीच ऊर्ध्वाधर डिवाइडर बनाएं), टाइप करें :vertical ball
  • क्षैतिज रूप से विभाजित करने के लिए, टाइप करें :ball

यदि छिपे हुए बफ़र्स हैं, तो इन आदेशों को जारी करने से छिपे हुए बफ़र्स भी दिखाई देंगे।


यह स्वीकृत उत्तर होना चाहिए, क्योंकि वर्तमान स्वीकृत उत्तर केवल दो फाइलों के लिए काम करेगा। यह उत्तर अधिक पूर्ण है।
DrStrangepork

:vert[ical] ballडॉक्टर :vert ballमें भी ठीक है और कम है।
टिटौ

:ball3 ऊर्ध्वाधर खिड़कियों को 2 क्षैतिज खिड़कियों तक कम कर देता है, जबकि 3 ऊर्ध्वाधर खिड़कियों को 3 ऊर्ध्वाधर खिड़कियों को :vert ball सही ढंग से मैप करता है।
टिटौ

27

VIM में, आपने जो किया है उसके लिए अलग-अलग विकल्प देखने के लिए निम्नलिखित पर एक नज़र डालें:

: विंडो खोलने में मदद

उदाहरण के लिए:

Ctrl- W s
Ctrl- W o
Ctrl- W v
Ctrl- W o
Ctrl- W s
...


11

क्षैतिज से ऊर्ध्वाधर विभाजन

Ctrl+ Wविंडो कमांड के लिए, उसके बाद Shift+ Hया Shift+L


ऊर्ध्वाधर से क्षैतिज विभाजन

Ctrl+ Wविंडो कमांड के लिए, उसके बाद Shift+ Kया Shift+J

दोनों समाधान तब लागू होते हैं जब केवल दो खिड़कियां मौजूद होती हैं।


डिफ़ॉल्ट रूप से एक ऊर्ध्वाधर विभाजन में मदद खोलें

इन दोनों पंक्तियों को इसमें जोड़ें .vimrc:

cabbrev help vert help
cabbrev h vert h

:vert[ical] {cmd}हमेशा cmdएक लंबवत विभाजन विंडो में निष्पादित होता है ।


6

स्टीव के उत्तर से प्रेरित होकर, मैंने सरल कार्य लिखा जो कि वर्तमान टैब में सभी खिड़कियों के लिए ऊर्ध्वाधर और क्षैतिज विभाजन के बीच टॉगल करता है। आप इसे नीचे अंतिम पंक्ति में मैपिंग की तरह बांध सकते हैं।

function! ToggleWindowHorizontalVerticalSplit()
  if !exists('t:splitType')
    let t:splitType = 'vertical'
  endif

  if t:splitType == 'vertical' " is vertical switch to horizontal
    windo wincmd K
    let t:splitType = 'horizontal'

  else " is horizontal switch to vertical
    windo wincmd H
    let t:splitType = 'vertical'
  endif
endfunction

nnoremap <silent> <leader>wt :call ToggleWindowHorizontalVerticalSplit()<cr>

मेरे लिए और भी बेहतर काम करता है अगर मैं इसे उसी तरह विभाजित करने के लिए मजबूर करता हूं if winnr() == 1 windo wincmd J windo wincmd k else windo wincmd J endif और if winnr() == 1 windo wincmd L windo wincmd h else windo wincmd L endifआशा है कि समझ में आता है।
mjhoffmann

5

ऊपर मार्क रुशकोफ की टिप के बाद , यहाँ मेरी मैपिंग है:

" vertical to horizontal ( | -> -- )
noremap <c-w>-  <c-w>t<c-w>K
" horizontal to vertical ( -- -> | )
noremap <c-w>\|  <c-w>t<c-w>H
noremap <c-w>\  <c-w>t<c-w>H
noremap <c-w>/  <c-w>t<c-w>H

संपादित करें: उपयोग Ctrl- w rदो खिड़कियों को स्वैप करने के लिए अगर वे अच्छे क्रम में नहीं हैं।

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