"अन्य-विंडो" द्वारा इंगित विंडो को परिभाषित करना


10

एमएसीएस में, मैं जितनी बार पसंद करता हूं, उससे अधिक मैं 4 विंडो या अधिक के साथ समाप्त करता हूं।

मैं उस उदाहरण का उपयोग करूंगा:

+--------|-----------+
|        |           |
|   1    |   2       |
|        |           |
+--------+-----------+
|    3   |     4     |
|        +-----------+
|        |     5     |
+--------+-----------+

समारोह के बहुत सारे other-window(आमतौर पर उसी खिड़की द्वारा इंगित C-x o) में कार्रवाई कर सकते हैं । विशेष रूप से उपयोगी हैं scroll-other-window। हालांकि, जब 4 या अधिक खिड़कियां खोली जाती हैं, तो other windowमैं जिसको चाहता हूं वह होने की संभावना नहीं है।

क्या खिड़की / बफर लेआउट को बदलने के बिना सेट करने का प्रबंधन करने का एक आसान तरीका है other-window? बेशक, यह एक गुच्छा का उपयोग करने योग्य है C-x 4 bऔर C-bलेकिन मैं लेआउट को बदलना नहीं चाहता। उदाहरण के लिए:

  • यदि उपरोक्त चित्र में विंडो 4 में संपादन किया गया है , तो क्या C-M-vविंडो 1 को स्क्रॉल करने का एक आसान तरीका है ?
  • या बस, खिड़की 3 पर ध्यान केंद्रित मान लीजिए , other-windowखिड़की 2 को इंगित करने के लिए कैसे सेट करें ?

जवाबों:


7

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

उस विंडो को बदलना जो उसे other-windowप्राप्त करने का एक तरीका है, लेकिन मैं एक वैकल्पिक वर्कफ़्लो का सुझाव देना चाहूंगा:

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

इक्का-दुक्का खिड़की का प्रदर्शन

यदि आप बाध्य ace-windowकरते हैं C-x o, तो आपको एक अतिरिक्त कुंजी बाइंडिंग याद करने की आवश्यकता नहीं है, और ऐसा महसूस होगा कि आप एक सुपरचार्ज संस्करण का उपयोग कर रहे हैं other-window

इसके अलावा, यदि आप टच-टाइप और / या अपनी उंगलियों को होम रो से बहुत दूर नहीं ले जाना पसंद करते हैं, तो आप ace-windowसंख्याओं के बजाय अक्षरों का उपयोग करके "नंबर" विंडो को निर्देश दे सकते हैं (नीचे देखें)।

ace-windowMELPA में उपलब्ध है । इसके माध्यम से स्थापित करने के बाद M-x package-install RET ace-window RET, आप इसे नीचे वर्णित के रूप में सेट करने के लिए अपनी इन-फाइल में डाल सकते हैं:

(global-set-key (kbd "C-x o") 'ace-window)
(setq aw-keys '(?a ?b ?c ?d ?e ?f ?g ?h ?i))

डेमो के लिए धन्यवाद, मैंने इस पैकेज को अन्य साइटों पर देखा है और सोच रहा था कि यह कैसे काम करता है। मैं वास्तव में विंडो को आसानी से स्विच कर सकता हूं क्योंकि मैंने M-1 M-2 ..विंडो नंबर 1, 2 का चयन करने के लिए बाध्य किया हैwindow-number
16

1

इसके स्रोत की त्वरित समीक्षा से other-windowऐसा लगता है कि यह वास्तव में उस विंडो पर निर्भर है next-window, जिसे c में परिभाषित किया गया है। दुर्भाग्य scroll-other-windowसे सी में भी परिभाषित किया गया है, और संभवतः वहां से अगली विंडो को कॉल करता है। मुझे नहीं लगता कि इसे ओवरराइड करना आसान है।

हालांकि, switch-to-buffer-other-windowउपयोग करने के लिए प्रतीत होता है pop-to-buffer, इसलिए आपको वहां कुछ भाग्य हो सकता है।


1

खिड़की की सूची में हेरफेर करने का कोई आसान तरीका नहीं है, इसलिए इसके द्वारा लौटाया गया परिणाम other-windowकम या ज्यादा निश्चित है। यह प्रति से अधिक बुरी चीज नहीं है, क्योंकि यह खिड़कियों को नेविगेट करते समय स्थिरता के लिए अनुमति देता है। आपके द्वारा वर्णित दो परिदृश्यों के बारे में, कुछ विशिष्ट या मैक्रो के साथ आप अपने वर्कफ़्लो के अनुरूप हो सकते हैं।

यदि उपरोक्त चित्र में विंडो 4 में संपादन किया गया है, तो क्या विंडो 1 को स्क्रॉल करने के लिए सीएमवी सेट करने का एक आसान तरीका है?

आप other-windowउपयुक्त संख्या का उपयोग करने के लिए नीचे दिए गए एक साधारण स्निपेट का उपयोग कर सकते हैं , नीचे स्क्रॉल कर सकते हैं और मूल विंडो पर वापस जा सकते हैं।

 (defun my-scroll-down-other-window (&optional arg)
 "Like `scroll-other-window' but takes a prefix argument 
 that indicates which window to scroll."
  (interactive "p")
  (save-selected-window
    (other-window arg)
    (scroll-down)))

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

या बस, खिड़की 3 पर फोकस मान लीजिए, other-windowखिड़की 2 को इंगित करने के लिए कैसे सेट करें?

फिर एक का उपयोग prefix-argके रूप में C-3 C-x oजब बुला other-window। प्रदान करने के लिए वास्तविक संख्या इस बात पर निर्भर करती है कि आप उन्हें किस क्रम में विभाजित करते हैं, और जब तक आप नई विंडो नहीं बनाते हैं, तब तक नहीं बदलेगी। वैकल्पिक रूप से, आप चयनित विंडो को तेजी से स्विच करने के लिए MELPA से window-numberया जैसे सुविधा पैकेज का उपयोग कर सकते हैं ace-window


सही है, खिड़की की सूची में हेरफेर करने का कोई आसान तरीका नहीं है। उपसर्गों का उपयोग करने के लिए मेरे पास एक कठिन समय है। ऐसा लगता है कि यह एक और अगम्य कुंजी जोड़ देता है और बात को धीमा कर देता है
लंपिक

कीबोर्ड मैक्रोज़ / कीबाइंडिंग किसके लिए हैं। यदि यह आपके कार्य प्रवाह का एक नियमित हिस्सा है, तो आप आसानी <f7> nसे nth विंडो को स्क्रॉल करने के लिए उपसर्ग मानचित्र आधारित कीबाइंडिंग को परिभाषित कर सकते हैं। कीबोर्ड मैक्रो के साथ अस्थायी एक कुंजी बाइंडिंग बनाएं।
वमसी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.