Emacsでは、 C-x o 次のウィンドウに移動します。
Emacsの前のウィンドウに移動するキーボードマクロは何ですか?
それは C-- C-x o
言い換えると、 C-x o 引数が-1の場合。間に数値引数を挿入することにより、移動するウィンドウの数を指定できます C-u コマンド C-u 2 C-x o。 (C-- のショートカットです C-u - 1)
また、ジオメトリに基づいて選択したウィンドウに移動できるwindmoveを使用することもできます。 C-x矢印キーを使用してウィンドウを変更するには、.emacsファイルに次のものがあります。
(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)
個人的には window-number.el
を使用したい
別のウィンドウを選択するには、次を使用します Ctrl-x、 Ctrl-j n
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 )
複数のemacsウィンドウ(> 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)
今すぐM-oを使ってウィンドウをすばやく切り替えます
ここには非常に優れた完全な回答がいくつかありますが、最小限の方法で質問に答えるには:
(defun prev-window ()
(interactive)
(other-window -1))
(define-key global-map (kbd "C-x p") 'prev-window)
@ Nate、@ aspirin、および@Troydmの答えに追加するだけで、windmoveコマンドを選択したキーの組み合わせにバインドすることにした場合、これは非常に役立つ追加であることがわかります。
(setq windmove-wrap-around t)
デフォルト設定では、存在しないウィンドウに移動しようとするとエラーが発生しますが、それはしばらくすると迷惑になります。ただし、windmove-wrap-aroundが設定されている場合、たとえばフレームの下部から移動しようとすると、代わりにフレームの一番上のウィンドウが選択されます。これはあなたにとってより直感的な動作かもしれません。
@Nateのアイデアに基づいていますが、ウィンドウ間で逆方向のサイクリングをサポートするためにわずかに変更されています
;; 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)
(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 ビジブルバッファを循環します。正確には、前方および後方。
ネイトの答えを参照して、arrow keys
を置き換えて、従来のp
を使用してup
、n
を使用してdown
、f
を使用しましたright
に行く場合はb
およびleft
になります。また、C-p, C-n, C-f and C-b
がデフォルトの移動キーであるため、Ctrl
をSuper
キーに置き換えました。このM
との組み合わせにより、キーストロークのたびに1つずつ移動するのではなく、文字と行をジャンプできます。したがって、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)
それが役に立てば幸い!
M-を使用してウィンドウを切り替えることができるパッケージが既にあります。 このWebサイトを確認してください 。これを初期化ファイルに追加します。
(require 'windmove)
(windmove-default-keybindings 'meta) ;; or use 'super to use windows key instead alt
(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"