emacsでは、ファイルを見つけたり、バッファーを切り替えたり、ミニバッファーで何かを実行したりする場合があり、何らかの理由で他の場所をクリックします。戻ると、ミニバッファプロンプトを再びアクティブにする唯一の方法は、ミニバッファ内をクリックすることです。これは、薄い領域であるため面倒です。マウスを使用せずにアクティブなミニバッファープロンプトに切り替える方法はありますか?
emacsでは、ファイルを見つけたり、バッファーを切り替えたり、ミニバッファーで何かを実行したりする場合があり、何らかの理由で他の場所をクリックします。戻ると、ミニバッファプロンプトを再びアクティブにする唯一の方法は、ミニバッファ内をクリックすることです。これは、薄い領域であるため面倒です。マウスを使用せずにアクティブなミニバッファープロンプトに切り替える方法はありますか?
回答:
これはあなたが望むことをします。選択したキーにバインドします。
(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)
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))))
RET
そのように含めたいのですか?ミニバッファーにあるものはすべて自動的に受け入れます(単一C-x o
バッファーがミニバッファーに切り替えられたと仮定)。一般C-x o
に、フレーム内に複数のウィンドウが開いている場合(通常のGUIの用語:ウィンドウ内の複数のペイン)(Emacsの用語では)、複数回使用する必要があります。
other-window
現在のウィンドウがミニバッファになるまで実行するループを記述する必要がありますか?
別のオプションは switch-window
私はそれが本当に便利なパッケージだと思います:それはあなたが視覚的に、Emacsウィンドウに素早く移動することを可能にします(そして私はEmacsで多くの開いているウィンドウを使用します)。
しかし、アクティブな場合、ミニバッファに移動できることもわかりました:
それが役に立てば幸い。
swap-buffers
、現在のバッファを別のウィンドウのバッファと交換するために同じ方法を使用します。
;; faster switching between windows in the same frame
(windmove-default-keybindings)
上記の2行のコードを.emacs.elに追加すると、ミニバッファーだけでなく、Shift-Arrowを使用してEmacsフレーム上の他のすべてのウィンドウをナビゲートするためのシンプルで効率的な移動が可能になります。
(select-frame-set-input-focus (window-frame (active-minibuffer-window)))
前に追加する必要がありますselect-window
。