Emacs, पिछली विंडो पर स्विच करें


93

Emacs में, C-x oमुझे अगली विंडो पर ले जाता है।

क्या कीबोर्ड मैक्रो मुझे Emacs में पिछली विंडो पर ले जाता है?

जवाबों:


88

वह होगा C-- C-x o

दूसरे शब्दों में, C-x o-1 के तर्क के साथ। आप निर्दिष्ट कर सकते हैं कि कितनी विंडो को C-u, जैसे कि और कमांड के बीच एक संख्यात्मक तर्क डालकर आगे बढ़ना है C-u 2 C-x o। (के C--लिए एक शॉर्टकट है C-u - 1)


और आप C-x zविंडोज़ को जल्दी से स्विच करने के लिए अंतिम कमांड को दोहराने के लिए उपयोग कर सकते हैं ।
इवान हुआंग

105

आप पवनचक्की का उपयोग करने का भी प्रयास कर सकते हैं जो आपको ज्यामिति के आधार पर अपनी पसंद की खिड़की पर नेविगेट करने की अनुमति देता है। मेरे पास .emacs फ़ाइल में Cx तीर-कुंजी का उपयोग करके विंडोज़ बदलने के लिए निम्नलिखित है।

(global-set-key (kbd "C-x <up>") 'windmove-up)
(global-set-key (kbd "C-x <down>") 'windmove-down)
(global-set-key (kbd "C-x <right>") 'windmove-right)
(global-set-key (kbd "C-x <left>") 'windmove-left)

11
ध्यान दें कि बुला (windmove-default-keybindings)बदलाव को बांधता है इन कार्यों + ऊपर / नीचे / छोड़ा / सही है, जो मुझे लगता है कि अपने से अधिक सुविधाजनक है C-x(बाइंडिंग के लिए भी उपयोगी डिफ़ॉल्ट बाइंडिंग के साथ जो संघर्ष previous-bufferऔर next-bufferlkahtz:। (kbd)समारोह आप स्ट्रिंग अंकन में कुंजी निर्दिष्ट कर सकते हैं जब आप उपयोग करते हैं C-h kया C-h cकिसी बंधन का वर्णन करने के लिए Emacs द्वारा उपयोग किया जाता है जो अधिक पठनीय वाक्यविन्यास में भी होता है ।
phils

4
मुझे तीर कुंजी का उपयोग करने की स्वीकृति नहीं है। लेकिन मैं वैसे भी सहायक के लिए upvott। : स्मॉग:
ब्योर्न

2
@ शिफ़्ट + <कीज़> शिफ्ट चयन के साथ मेडल्स जो एमएसीएस 23 से डिफ़ॉल्ट रूप से सक्षम है (शिफ्ट-सिलेक्शन-मोड)।
लेजेंड्स 2k

2
किंवदंतियों 2k: सच; यद्यपि आप windmove-default-keybindingsतीर कुंजियों के साथ संयोजन में उपयोग करने के लिए एक अलग संशोधक निर्दिष्ट करने के लिए एक तर्क भी पारित कर सकते हैं ; ताकि फ़ंक्शन शिफ्ट-चयन-मोड का उपयोग करने वाले लोगों के लिए अभी भी काम कर सके।
फिल्स

1
@ एफिल्स सहमत, मेटा एक अच्छा विकल्प लगता है; जैसा कि Emacs Wiki में देखा गया है
लीजेंड 2k

30

व्यक्तिगत रूप से मैं उपयोग करना पसंद करता हूं window-number.el

एक अलग विंडो का चयन करने के लिए, Ctrl- x, Ctrl- n का उपयोग करेंj

जहाँ n विंडो की संख्या है, प्रत्येक विंडो का मॉडलाइन नंबर दिखाता है, जैसा कि स्क्रीनशॉट में दिखाया गया है।

बस Window-number.el डाउनलोड करें , इसे अपने emacs लोड-पाथ में रखें और अपने में निम्नलिखित का उपयोग करें.emacs

 (autoload 'window-number-mode "window-number"
   "A global minor mode that enables selection of windows according to
 numbers with the C-x C-j prefix.  Another mode,
 `window-number-meta-mode' enables the use of the M- prefix."
   t)

इसी तरह की एक अन्य विधा है, switch-window.elजो आपको विंडोज़ में बड़ी संख्या देती है ... (संख्या स्विच विंडो को दबाती है और प्रदर्शन को वापस लाती है।)


(स्रोत: tapoueh.org )


2
अच्छा है, लेकिन मैं करने के लिए कुछ बाध्यकारी नहीं सुझाव देंगे C-x C-j, के रूप में है कि डिफ़ॉल्ट के लिए बाध्यकारी है dired-jumpअगर तुम (require 'dired-x)। (देखें M-x customize-group RET dired-keys RET, तो आपको लगता है कि ओवरराइड करने के लिए चाहते हैं।)
फिल्स

1
इसे पोस्ट करने के बाद मैंने switch-window.elइसे एक जगह देने का फैसला किया , यह C-x oइसके बजाय उपयोग करता है , और जब केवल दो विंडो सक्रिय होती हैं, तो यह दूसरी विंडो का चयन करती है। मुझे लगता है कि यह चाल C-x oकरने के लिए विद्रोह करने के लिए सबसे बुद्धिमान है window-number, आप इसके बारे में काफी सही हैं dired-jump। व्यक्तिगत रूप से मैं विंडो स्विचिंग कम करता C-x bहूं और खुद का उपयोग करता हूं, लेकिन बढ़ाया C-x oहोना काफी सुखदायक है।
ओसोडो

पहले स्क्रीनशॉट में अद्भुत Emacs विषय वाह। मैं इसे कैसे प्राप्त कर सकता हूँ?
22

मेरे ईमेल पर @semente संबंधित पेज jasonm23.github.com/EmacsFodder/Emacs/2012/06/29/…
ocodo

1
@petrux emacsfodder.github.io/blog/two-new-emacs24-themes मुझे लगता है कि यह शायद दो विषयों में से एक है। - बी.टी.वी. एक शांत मोड लाइन के लिए gist.github.com/jasonm23/8554119 पर
ocodo

13

यदि आप कई एमएसीएस विंडो (> 3) के साथ काम करते हैं और आप कुछ कीस्ट्रोक्स को अपने इनिट फ़ाइल में जोड़ना चाहेंगे और आप बेहतर बंद हो जाएंगे:

(defun frame-bck()
  (interactive)
  (other-window-or-frame -1)
)
(define-key (current-global-map) (kbd "M-o") 'other-window-or-frame)
(define-key (current-global-map) (kbd "M-O") 'frame-bck)

अब बस जल्दी से मो के साथ खिड़कियों को फेंक दें


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

मुझे लगता है कि ये बहुत अच्छी बाइंडिंग हैं (विशेषकर जब आपके पास 2+ विंडो हों), धन्यवाद। जैसा कि कहा जाता other-windowहै कि इसे काम करने के लिए बदलने के लिए भी टोपी ।
dolzenko

11

यहाँ कुछ बहुत अच्छे और पूर्ण उत्तर दिए गए हैं, लेकिन सवाल का जवाब कम से कम अंदाज में देना है:

 (defun prev-window ()
   (interactive)
   (other-window -1))

 (define-key global-map (kbd "C-x p") 'prev-window)

2
मैं नहीं जानता कि कब से, लेकिन emacs ने अब previous-windowनिर्माण किया है।
Arne

@Arne यह एक कॉल करने योग्य कार्य नहीं है, M-xइसलिए इसका एक अलग उद्देश्य पूरा करना चाहिए।
इवान हुआंग

4

@ नोट से विचार के आधार पर, लेकिन खिड़कियों के बीच पीछे की ओर साइकिल चलाने के लिए थोड़ा संशोधित

;; Windows Cycling
(defun windmove-up-cycle()
  (interactive)
  (condition-case nil (windmove-up)
    (error (condition-case nil (windmove-down)
         (error (condition-case nil (windmove-right) (error (condition-case nil (windmove-left) (error (windmove-up))))))))))

(defun windmove-down-cycle()
  (interactive)
  (condition-case nil (windmove-down)
    (error (condition-case nil (windmove-up)
         (error (condition-case nil (windmove-left) (error (condition-case nil (windmove-right) (error (windmove-down))))))))))

(defun windmove-right-cycle()
  (interactive)
  (condition-case nil (windmove-right)
    (error (condition-case nil (windmove-left)
         (error (condition-case nil (windmove-up) (error (condition-case nil (windmove-down) (error (windmove-right))))))))))

(defun windmove-left-cycle()
  (interactive)
  (condition-case nil (windmove-left)
    (error (condition-case nil (windmove-right)
         (error (condition-case nil (windmove-down) (error (condition-case nil (windmove-up) (error (windmove-left))))))))))

(global-set-key (kbd "C-x <up>") 'windmove-up-cycle)
(global-set-key (kbd "C-x <down>") 'windmove-down-cycle)
(global-set-key (kbd "C-x <right>") 'windmove-right-cycle)
(global-set-key (kbd "C-x <left>") 'windmove-left-cycle)

4

बस @Nate, @aspirin और @ Troydm के उत्तर को जोड़ने के लिए मुझे लगता है कि यह एक बहुत ही उपयोगी जोड़ है यदि आप विंडमॉव कमांड को जो भी महत्वपूर्ण संयोजन चुनते हैं उसे बाँधने का निर्णय लेते हैं:

(setq windmove-wrap-around t)

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


4

M-nऔर M-pमेरे लिए सबसे ज्यादा मायने रखता है, क्योंकि वे C-n( अगली पंक्ति ) के अनुरूप हैं और C-p( पिछली-पंक्ति ) के अनुरूप हैं :

(define-key global-map (kbd "M-p") 'previous-multiframe-window)
(define-key global-map (kbd "M-n") 'other-window)

( इस और उस से प्रेरित )


मैंने इस कॉन्फिगर को उकेरा और इस्तेमाल किया है। समस्या यह है कि M-nऔर M-pपहले से ही टर्मिनलों (gdb, python, ielm, आदि) में उपयोग किया जाता है, इसलिए आपको टर्मिनल बफर से बाहर निकलने के लिए दूसरी विधि पर वापस जाना होगा।
mihai

उन वातावरणों में उनका क्या उपयोग किया जाता है?
14

इस पल के लिए मैंने जो सबसे अच्छा देखा, वह अन्य सामान के खिलाफ नहीं जाता है और आकर्षण की तरह काम करता है! धन्यवाद!
ऑरेलीन

2

नैट के जवाब के संदर्भ में, मैं प्रतिस्थापित arrow keysपारंपरिक उपयोग करने के लिए pजाने के लिए up, nजाने के लिए down, fजाने के लिए rightऔर bजाने के लिए left। मैं भी कुंजी के Ctrlसाथ बदल दिया के Superरूप C-p, C-n, C-f and C-bमें डिफ़ॉल्ट आंदोलन कुंजी हैं। यह संयोजन Mआपको प्रत्येक कीस्ट्रोक के बाद केवल एक-एक करके जाने के बजाय पात्रों और रेखाओं को कूदने देता है। इस प्रकार Superकुंजी को एक आसान कुंजी बंधन रखने के लिए सबसे अच्छा विकल्प लगा। इसके अलावा, अब आपको अपना हाथ घर की किसी भी पंक्ति में नहीं रखना है!

(global-set-key (kbd "s-p") `windmove-up)
(global-set-key (kbd "s-n") `windmove-down)
(global-set-key (kbd "s-f") `windmove-right)
(global-set-key (kbd "s-b") `windmove-left)

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


2
(global-unset-key (kbd "M-j"))
(global-unset-key (kbd "M-k"))
(global-set-key (kbd "M-j") (lambda () (interactive) (other-window 1)))
(global-set-key (kbd "M-k") (lambda () (interactive) (other-window -1)))

altjऔर altkआपके विज़िबल बफ़र्स के माध्यम से साइकिल चलाएगा। आगे और पीछे, सटीक होना।


एमके थोड़े उपयोगी शॉर्टकट है। कोई अन्य विकल्प?
a_P


0
(global-set-key (kbd "C-x a") 'ace-swap-window)  
(global-set-key (kbd "C-x q") 'ace-select-window)

download ace-window from the melpa repo if you don't know how to do that
put this in your .emacs file if you don't have one create it 

(package-initialize)                                                                                                                                                                     

(require 'package)                                                                                                                                                                       
(add-to-list 'package-archives '("melpa" , "http://melpa.org/packages/"))                                                                                                                

(package-initialize) 

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