क्या यह बताना संभव है कि कोई खिड़की नीचे या ऊपर, बाएं या दाएं है?


13

मुझे नहीं पता कि खिड़की की स्थिति की जांच करने के लिए कुछ कार्य है, मेरा मतलब है कि यह वर्तमान में नीचे या ऊपर, बाएं या दाएं बैठे हैं ??

__________________________
|           |            |
|           |            |
|  left     |   right    |
|           |            |
|           |            |
|___________|____________|

__________________________
|                        |
|          top           |
|________________________|
|                        |
|         bottom         |
|_______________________ |

तुम क्या करने की कोशिश कर रहे हो? (XY प्रॉब्लम)
mMontu

मैं एक कार्यपट्टी लिखने की कोशिश कर रहा हूं कि खिड़की के विभाजन को ऊर्ध्वाधर में घुमाया जाए यदि वर्तमान लेआउट क्षैतिज है और इसके विपरीत जब सिर्फ दो खिड़कियां होती हैं। इसलिए मुझे यह जानने की आवश्यकता है कि वर्तमान विभाजन लेआउट क्या है और मेरी वर्तमान विंडो कहां है
आरोन शेन

3
क्यों नहीं बस का उपयोग करें ctrl-W_L? (या ctrl-W_R)
विटोर

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

@AaronShen कमांड को रिस्टोर करने वाली विंडो पर एक नज़र डालें ।
मुरु

जवाबों:


4

प्रश्न की टिप्पणियों को सारांशित करना:

- मैं खिड़की को घुमाने के लिए एक फंक्शन लिखने की कोशिश कर रहा हूं अगर वर्टिकल लेआउट यह क्षैतिज है और इसके विपरीत जब दो विंडो होती हैं।

- बस ctrl-W_L का उपयोग क्यों नहीं किया जाता है? (या ctrl-W_R)

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

केवल दो विंडो वाले लेआउट के लिए निम्न कार्य करना चाहिए:

function! Rotate()
   " save the original position, jump to the first window
   let initial = winnr()
   exe 1 . "wincmd w"

   wincmd l
   if winnr() != 1
      " succeeded moving to the right window
      wincmd J " make it the bot window
   else
      " cannot move to the right, so we are at the top
      wincmd H " make it the left window
   endif

   " restore cursor to the initial window
   exe initial . "wincmd w"
endfunction

nnoremap <F3> :call Rotate()<CR>

भयानक समारोह, मुझे लगता है कि सभी विम स्क्रिप्ट नहीं जानते, लेकिन धन्यवाद, यह पूरी तरह से काम करता है !! btw, मैं इसके लिए सिर्फ एक अतिरिक्त जांच जोड़ता हूं जब केवल दो खिड़कियां होती हैं।
आरोन शेन

6

मुझे नहीं लगता कि दुर्भाग्य से इसे जांचने का कोई तरीका है।

एक कस्टम फ़ंक्शन बनाने का एक तरीका हो सकता है जो यह जाँचता है: विंडो नंबर हमेशा नीचे दाईं ओर 1 से ऊपर बाईं ओर n में गिने जाते हैं । शायद कोई इसे ज्यामिति के डेटा winwidth(), winheight()और मूल्यों के साथ &linesऔर &columnsवांछित मानचित्र बनाने के लिए संयुक्त रूप से उपयोग कर सकता है ?

ध्यान दें, सामान्य होने के लिए, इसे अधिक जटिल लेआउट का समर्थन करना चाहिए। उदाहरण के लिए बाईं ओर दो भागों में विभाजित होने पर आउटपुट क्या होना चाहिए? शायद यही कारण है कि फ़ंक्शन पहले स्थान पर मौजूद नहीं है ...

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