No Emacs, C-x ome leva para a próxima janela.
Qual macro de teclado me leva para a janela anterior no Emacs?
No Emacs, C-x ome leva para a próxima janela.
Qual macro de teclado me leva para a janela anterior no Emacs?
Respostas:
Você também pode tentar usar o windmove, que permite navegar até a janela de sua escolha com base na geometria. Eu tenho o seguinte em meu arquivo .emacs para alterar janelas usando a tecla de seta 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)
(windmove-default-keybindings)
vincula essas funções a SHIFT + cima / baixo / esquerda / direita, o que eu acho mais conveniente do que seus C-x
vínculos (que entram em conflito com os vínculos padrão também úteis para previous-buffer
e next-buffer
. Lkahtz: a (kbd)
função permite especificar chaves em notação de string na sintaxe mais legível que também é usada pelo Emacs quando você usa C-h k
ou C-h c
para descrever uma ligação.
windmove-default-keybindings
para especificar um modificador diferente para usar em conjunto com as teclas de seta; de modo que essa função ainda pode ser útil para pessoas que usam o modo de seleção de deslocamento.
Pessoalmente, prefiro usar window-number.el
Para selecionar uma janela diferente, use Ctrl- x, Ctrl- j n
Onde n é o número da janela, a modeline de cada janela mostra seu número, conforme mostrado na imagem.
Basta baixar window-number.el , colocá-lo em seu caminho de carregamento emacs e usar o seguinte em seu.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)
Há outro modo semelhante chamado switch-window.el
que fornece números grandes nas janelas ... (pressionar o número muda a janela e reverte a exibição.)
(fonte: tapoueh.org )
C-x C-j
, já que essa é a vinculação padrão para dired-jump
se você (require 'dired-x)
. (Veja M-x customize-group RET dired-keys RET
se você deseja substituir isso.)
switch-window.el
uma chance, ele usa no C-x o
lugar, e quando há apenas duas janelas ativas, ele só seleciona a outra janela. Acho que é mais sensato religar C-x o
para fazer o window-number
truque, você tem toda a razão dired-jump
. Pessoalmente, eu mesmo faço menos troca de janelas e uso C-x b
, mas ter o aprimorado C-x o
é bastante agradável.
Se você trabalha muito com várias janelas emacs (> 3) e deseja salvar algumas teclas, adicione isso ao seu arquivo init e ficará melhor:
(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)
Agora, basta circular rapidamente pelas janelas com Mo
other-window
para fazê-lo funcionar.
Existem algumas respostas muito boas e completas aqui, mas para responder à pergunta de uma forma minimalista:
(defun prev-window ()
(interactive)
(other-window -1))
(define-key global-map (kbd "C-x p") 'prev-window)
previous-window
integrado.
M-x
que pode ser chamada, portanto, deve servir a um propósito diferente.
Baseia-se na ideia de @Nate, mas ligeiramente modificado para suportar o ciclo reverso entre janelas
;; 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)
Apenas para adicionar a @Nate, a resposta de @aspirin e @Troydm, considero esta uma adição muito útil se você decidir vincular os comandos windmove a qualquer combinação de teclas que você escolher:
(setq windmove-wrap-around t)
Com a configuração padrão, você obterá um erro ao tentar mover para uma janela que não existe, o que se torna meio chato depois de um tempo. No entanto, quando windmove-wrap-around é definido, tentar mover para fora da parte inferior do quadro, por exemplo, selecionará a janela superior do quadro. Este pode ser um comportamento mais intuitivo para você.
M-n
e M-p
faz mais sentido para mim, uma vez que são análogos a C-n
( linha seguinte ) e C-p
( linha anterior ):
(define-key global-map (kbd "M-p") 'previous-multiframe-window)
(define-key global-map (kbd "M-n") 'other-window)
M-n
e M-p
já são usados em terminais (gdb, python, ielm, etc.), então você terá que voltar para outro método para pular do buffer do terminal.
Em referência à resposta de Nate, substituí o arrow keys
para usar o tradicional p
para ir up
, n
para ir down
, f
para ir right
e b
para ir left
. Eu também substituiu o Ctrl
com Super
chave como C-p, C-n, C-f and C-b
são as chaves do movimento padrão. Esta combinação com M
permite que você pule caracteres e linhas em vez de passar apenas um por um após cada pressionamento de tecla. Assim, Super
key sentiu a melhor escolha para mantê-la uma fácil encadernação. Além disso, agora você não precisa mais tirar a mão da linha inicial!
(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)
Espero que ajude!
(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)))
altje altkpercorrerá seus buffers visíveis. Para a frente e para trás, para ser exato.
Já existe um pacote que permite alternar entre janelas usando M-. verifique este site . Adicione isso ao seu arquivo init:
(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"
C-x z
para repetir o último comando para alternar rapidamente as janelas.