कैसे माउस के बिना emacs में एक सक्रिय मिनीबफ़र शीघ्र वापस पाने के लिए


36

Emacs में, कभी-कभी मैं फ़ाइल खोजने या बफ़र्स स्विच करने या मिनीबफ़र में कुछ करने के बीच में रहूँगा, और मैं किसी और कारण से कहीं और क्लिक करूँगा। जब मैं वापस जाता हूं, तो मिनीबफ़र को फिर से सक्रिय करने का एकमात्र तरीका मिनीबफ़र के अंदर क्लिक करना है, जो कि कष्टप्रद है क्योंकि यह एक पतला क्षेत्र है। क्या माउस का उपयोग किए बिना किसी सक्रिय मिनीबफ़र प्रॉम्प्ट पर वापस जाने का कोई तरीका है?

जवाबों:


25

यह वही करेगा जो आप चाहते हैं। अपनी पसंद की चाबी से बांधें:

(defun switch-to-minibuffer-window ()
  "switch to minibuffer window (if active)"
  (interactive)
  (when (active-minibuffer-window)
    (select-frame-set-input-focus (window-frame (active-minibuffer-window)))
    (select-window (active-minibuffer-window))))
(global-set-key (kbd "<f7>") 'switch-to-minibuffer-window)

2
यदि आपके पास कई फ़्रेम हैं, तो आपको (select-frame-set-input-focus (window-frame (active-minibuffer-window)))पहले जोड़ने की आवश्यकता है select-window
दशहरा

@dshepherd मैं पुष्टि कर सकता हूं कि आपकी एलिस्प लाइन डालने के बाद, समृद्ध फ़ंक्शन केवल एक फ्रेम के साथ भी काम कर रहा है। धन्यवाद।
dimitarvp

@dshepherd धन्यवाद, ने उचित रूप से कोड अपडेट किया है।
ट्रे जैक्सन

23
C-x o 

आवश्यकतानुसार दोहराएं।

Cx o कमांड अन्य-विंडो को चलाता है, जो `C स्रोत कोड 'में एक संवादात्मक अंतर्निहित फ़ंक्शन है।

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

(defun select-minibuffer ()
 "Make the active minibuffer the selected window."
 (interactive)
 (when (active-minibuffer-window)
   (select-window (active-minibuffer-window))))

1
आप ऐसा क्यों शामिल करना RETचाहेंगे? यह स्वचालित रूप से जो कुछ भी मिनीबफ़र में था (मानने वाले के लिए एकल C-x oस्विच किया गया है) को स्वीकार करेगा। आम तौर पर, किसी को C-x oकई बार उपयोग करने की आवश्यकता हो सकती है यदि फ्रेम में (Emacs parlance में) एकाधिक विंडो खुली हों (सामान्य GUI शब्दों में: विंडो में कई पैन)।
क्रिस जॉन्सन

आप सही हे। मेरी गलती।
रिचर्ड हॉकिंस

क्या सभी खिड़कियों के माध्यम से संभावित साइकिल चलाने के बिना सीधे मिनीबफ़र तक पहुंचने का कोई तरीका है? क्या मुझे बस एक लूप लिखना चाहिए जो other-windowवर्तमान विंडो तक मिनीबफ़र है?
रयान सी। थॉम्पसन

6

एक अन्य विकल्प का उपयोग कर रहा है switch-window

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

लेकिन मुझे अभी पता चला है कि अगर आप सक्रिय हैं तो यह आपको मिनीबार में जाने की अनुमति देता है:

यहाँ छवि विवरण दर्ज करें

आशा करता हूँ की ये काम करेगा।


1
एक संबंधित पैकेज वह है swap-buffersजो वर्तमान बफर को उसी विंडो में स्वैप करने के लिए उसी विधि का उपयोग करता है।
पायरोक्रास्टी

0
;; faster switching between windows in the same frame
(windmove-default-keybindings)

.Emacs.el में कोड की दो उपर्युक्त पंक्तियों को जोड़ने से यह सरल और कुशल चलती है, न केवल मिनीबार के लिए, बल्कि शिफ्ट-एरो का उपयोग करके एमएसीएस फ्रेम पर अन्य सभी खिड़कियों को नेविगेट करना ।

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