マウスなしで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

@dshepherd Elispの行を挿入した後、強化された関数が1つのフレームだけでもうまく機能していることを確認できます。ありがとう。
dimitarvp

@dshepherdありがとう、適切にコードを更新しました。
トレイジャクソン

23
C-x o 

必要に応じて繰り返します。

Cx oは、コマンドother-windowを実行します。これは、「Cソースコード」のインタラクティブな組み込み関数です。

ウィンドウを循環させたくない場合は、initファイルに関数を追加して、キーにバインドできます。このような何かが動作する可能性があります:

(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に、フレーム内に複数のウィンドウが開いている場合(通常のGUIの用語:ウィンドウ内の複数のペイン)(Emacsの用語では)、複数回使用する必要があります。
クリスジョンセン

あなたが正しい。私の悪い。
リチャードホスキンス

すべてのウィンドウを循環させることなく、ミニバッファーに直接アクセスする方法はありますか?other-window現在のウィンドウがミニバッファになるまで実行するループを記述する必要がありますか?
ライアンC.トンプソン

6

別のオプションは switch-window

私はそれが本当に便利なパッケージだと思います:それはあなたが視覚的に、Emacsウィンドウに素早く移動することを可能にします(そして私はEmacsで多くの開いているウィンドウを使用します)。

しかし、アクティブな場合、ミニバッファに移動できることもわかりました:

ここに画像の説明を入力してください

それが役に立てば幸い。


1
関連するパッケージはswap-buffers、現在のバッファを別のウィンドウのバッファと交換するために同じ方法を使用します。
火砕物

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

上記の2行のコードを.emacs.elに追加すると、ミニバッファーだけでなく、Shift-Arrowを使用してEmacsフレーム上の他のすべてのウィンドウをナビゲートするためのシンプルで効率的な移動が可能になります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.