Fare olmadan emacs etkin bir minibuffer istemine nasıl geri dönülür


36

EMAC'larda bazen bir dosya bulmanın ya da arabellekleri değiştirmenin ya da mini arabellekte bir şeyler yapmanın ortasında olacağım ve nedense başka bir yere tıklayacağım. Geri döndüğümde, minibuffer komutunu tekrar etkin hale getirmenin tek yolu, ince bir alan olduğu için can sıkıcı olan minibuffer'ın içine tıklamak. Fareyi kullanmadan aktif bir minibuffer istemine geri dönmenin bir yolu var mı?

Yanıtlar:


25

Bu istediğini yapacak. Seçtiğiniz anahtarla bağlantı kurun:

(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
Birden fazla kareniz varsa, (select-frame-set-input-focus (window-frame (active-minibuffer-window)))önce eklemeniz gerekir select-window.
dshepherd

@dshepherd Elisp hattınızı yerleştirdikten sonra, zenginleştirilmiş fonksiyonun sadece bir kare ile iyi çalıştığını onaylayabilirim. Teşekkürler.
dimitarvp

@dshepherd Teşekkürler, kodu uygun şekilde güncelledik.
Trey Jackson

23
C-x o 

Gerektiği kadar tekrar edin.

Cx o `C kaynak kodu 'içinde etkileşimli bir yerleşik işlev olan diğer pencere komutunu çalıştırır.

Pencereler arasında dolaşmak istemiyorsanız, init dosyanıza bir işlev ekleyebilir ve bir anahtara bağlayabilirsiniz. Böyle bir şey işe yarayabilir:

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

1
Neden RETböyle eklemek istersin? Mini tampondaki her şeyi otomatik olarak kabul eder (tek bir C-x ominibuffer'a geçilirse). Genel olarak, C-x o(Emacs parlance'da) çerçevede açık birden fazla pencere varsa (normal GUI terimlerinde: pencerede birden fazla bölme varsa), birden çok kez kullanılması gerekebilir .
Chris Johnsen

Haklısın. Benim hatam.
Richard Hoskins

Tüm pencerelerde potansiyel olarak bisiklet sürmeden doğrudan minibüse ulaşmanın bir yolu var mı? Sadece other-windowmevcut pencere minibuffer olana kadar olan bir döngü yazmalı mıyım ?
Ryan Thompson

6

Başka bir seçenek kullanıyor switch-window

Gerçekten kullanışlı bir paket olduğunu düşünüyorum: görsel olarak herhangi bir Emacs penceresine hızlıca gitmenizi sağlar (ve Emacs'ta çok fazla açık pencere kullanıyorum).

Ama şunu da biliyorum, eğer aktifse mini arabana gitmenizi de sağlar:

görüntü tanımını buraya girin

Umarım yardımcı olur.


1
swap-buffersGeçerli bir tamponu başka bir pencerede değiştirmek için aynı yöntemi kullanan ilgili bir pakettir .
pirotik

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

.Emacs.el dosyasına yukarıdaki iki kod satırının eklenmesi, yalnızca minibuffer'a değil, aynı zamanda Shift-Arrow kullanarak Emacs çerçevesindeki tüm diğer pencerelerde gezinmeye de basit ve verimli bir hareket sağlar .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.