दो खिड़कियों की स्थिति स्वैप करें


29

मेरी खिड़की की वर्तमान संरचना निम्नलिखित है:

+ ----- + ----------------------------
| |
| ए |
| |
+ ----- +
| |
| B |

A और B का क्रम बिलकुल स्वाभाविक नहीं है। यह बेहतर होगा यदि बी शीर्ष पर था।

हालांकि, अगर मैं जाता हूं, तो <C-w>Kबी सभी खिड़कियों में सबसे ऊपर होगा, जो कि मैं नहीं चाहता। मैं B को A से ऊपर कैसे रख सकता हूं, लेकिन किसी अन्य विंडो के ऊपर नहीं जो कि पहले से ही A के ऊपर है?

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


7
यह पोस्ट बताती है कि खिड़कियों को कैसे घुमाना है। यह विभाजन को ऊर्ध्वाधर से क्षैतिज में बदलने के बारे में है।
lcd047

@ lcd047 वे प्रश्न इस साइट के बाहर हैं। क्या यह यहां एक छोटा सा उत्तर लिखने के लायक है और इसमें लिंक शामिल हैं (जो मूल्यवान हैं)?
बर्नहार्ड

1
@ मुझे लगता है कि यह मेटा के लिए एक अच्छा सवाल है ।
lcd047

1
@ बर्नहार्ड हाँ । लिंक ही नहीं, पूरा उत्तर लिखना सुनिश्चित करें।
गिल्स एसओ- बुराई को रोकें '

1
तो कृपया बताएं कि आप क्या करने की कोशिश कर रहे हैं और दो उत्तर क्यों दिए हैं मैंने आपको समस्या का समाधान नहीं करने के लिए कहा।
lcd047

जवाबों:


33

विभाजन विंडो के दो हिस्सों को स्वैप करने के लिए बस यह करें: <C-w> <C-r>


मैं गलत हो सकता हूं, लेकिन आपका समाधान खिड़कियों को घुमाएगा, इसलिए 2 से अधिक विभाजन परिणाम ओपी की तलाश में नहीं होंगे।
statox

तुम पूरी तरह ठीक हो। ओपी को s.th की तलाश थी। "स्प्लिट विंडो के दो हिस्सों को स्वैप करें" की तुलना में अधिक जटिल है।
मोदेसो

दरअसल ओपी दो स्प्लिट विंडो को स्वैप करने के कमांड की तलाश में है लेकिन आपका सॉल्यूशन सभी मौजूदा स्प्लिट विंडो को घुमाता है। के रूप में में कहा गया है :h CTRL-W_CTRL-R: The second window becomes the first one, the third one becomes the second one, etc.इस प्रकार अगर आप 3 विभाजन, नीचे एक पर कर्सर है और मारा <c-w><c-r>3 खिड़की 2 अन्य लोगों को जो नहीं है के शीर्ष पर होगा क्या ओ पी के लिए पूछ रहा था:How can I put B above A, but not above any other window that is already above A?
statox

6

windowपदों को स्वैप करने के लिए , प्रभाव बफ़र्स को स्वैप करने के बराबर है जो उन दो खिड़कियों को दिखाते हैं।
उदाहरण यदि विंडो ए में बफर 2 है और विंडो बी में बफर 8 है, तो आप विंडो ए में जाना चाहते हैं, बफर 8 का चयन करें, फिर विंडो बी में, बफर 2 का चयन करें।

इस विचार ने मुझे इसकी स्क्रिप्ट करने के लिए प्रेरित किया - और यह पहले से ही मेरे टूलबॉक्स में भी है

समारोह कोड:

function! WinBufSwap()
  let thiswin = winnr()
  let thisbuf = bufnr("%")
  let lastwin = winnr("#")
  let lastbuf = winbufnr(lastwin)

  exec  lastwin . " wincmd w" ."|".
      \ "buffer ". thisbuf ."|".
      \ thiswin ." wincmd w" ."|".
      \ "buffer ". lastbuf
endfunction

command! Wswap :call WinBufSwap()
map <Leader>bs <C-c>:call WinBufSwap()<CR>
  1. विंडो A चुनें
  2. विंडो B चुनें
  3. :call WinBufSwap()
    यह दो पूर्व-चयनित विंडो में बफ़र्स को स्वैप करता है, मूल विंडो में कर्सर को छोड़ देता है।

समय से पहले अदला-बदली करने के लिए दो वांछित विंडो का चयन करना महत्वपूर्ण विवरण है, क्योंकि विम के लिए निर्दिष्ट करने की आवश्यकता है जिसके साथ काम करना है।


बस एक सटीक, जब आप कहते हैं "विंडो ए का चयन करें, तो बी", क्या आपका मतलब है "ए पर फोकस है, फिर बी पर, अंतिम बार देखे गए बफ़र्स और खिड़कियों के क्रम को चिह्नित करने के लिए, ठीक से स्वैप करने के लिए? या क्या"? "मतलब कुछ और है" का चयन करें "पर ध्यान केंद्रित है?"
padawin

हां बिल्कुल: मैं "चयन" का उपयोग "फोकस" के रूप में कर रहा हूं।
कोमेट्सॉन्ग

6
CTRL-W x विंडो N के साथ वर्तमान विंडो का आदान-प्रदान करता है
                   (डिफ़ॉल्ट: अगली विंडो)

( index.txtखंड 2.2, "विंडो कमांड")

यदि A वर्तमान विंडो है, तो अगला B होगा, इसलिए आपको केवल आवश्यकता होगी <C-w> x

यदि B वर्तमान विंडो है (और नीचे अधिक विंडो हैं) तो आपको पहले A पर जाना होगा, फिर विनिमय करना होगा: <C-w> k <C-w> x


4

खिड़कियों की अदला-बदली या बफ़र्स को स्वैप करने का एक और विकल्प, आपकी फ़ाइलों में पदों ( बड़े अक्षरों का उपयोग करके ) को चिह्नित करना और उन चिह्नों को अपने चयन की खिड़कियों में खोलना है।

उदाहरण के लिए यदि मेरे पास दो फाइलें हैं, तो file_A और file_B :

  • मैं file_A के साथ विंडो पर जाऊंगा और इसे चिह्नित करूंगा :mA
  • file_B के साथ विंडो पर जाएं और इसे चिह्नित करें:mB
  • फिर उस विंडो में file_A का निशान लाएँ :'A
  • फिर पहली विंडो पर वापस जाएं और वहां file_B का निशान लाएँ'B :।

इस पद्धति का लाभ यह है कि यदि किसी कारण से आप अपने फलक को एक से अधिक बार विभाजित करते हैं और उन्हें चारों ओर स्वैप करने का कोई स्पष्ट तर्क नहीं है, जैसे यदि आप 12 बजे और 7 बजे पैन को स्वैप करना चाहते हैं, तो आप ' t बस खिड़कियों को चारों ओर घुमाएं लेकिन आप आसानी से बफ़र्स को स्वैप कर सकते हैं।


0

आप निम्न फ़ंक्शन के साथ दो विंडो के बीच बफ़र्स स्वैप कर सकते हैं:

function! SwitchWindow(count) abort
    let l:current_buf = winbufnr(0)
    exe "buffer" . winbufnr(a:count)
    exe a:count . "wincmd w"
    exe "buffer" . l:current_buf
    wincmd p
endfunction
nnoremap <C-w>x :<C-u>call SwitchWindow(v:count1)<CR>

अब, सबसे अधिक बार, बफ़र्स को स्वैप करना तकनीकी रूप से स्वैपिंग विंडो की तरह काम करेगा। क्योंकि आप मैन्युअल रूप से खिड़कियों का ट्रैक नहीं रखते हैं, आप इस बात का ध्यान रखते हैं कि कौन सी खिड़की किस बफर को पकड़े हुए है। तो, ऊपर का फ़ंक्शन आपको अधिकांश स्थितियों के लिए मिलेगा।

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