Pergunta
No Emacs, C-x o me leva para a próxima janela.
O macro teclado leva-me para a janela anterior no Emacs?
Solução
Isso seria C-- C-x o
Em outras palavras, C-X O com um argumento de -1. Você pode especificar quantas janelas para passar através da inserção de um argumento numérico entre C-u e de comando, como em C-u 2 C-x o . ( C - é um atalho para C-u - 1 )
Outras dicas
Você também pode querer tentar usar windmove que permite que você navegue para a janela de sua escolha com base na geometria. Eu tenho o seguinte no meu .emacs arquivo para janelas de mudança usando C-x arrow-chave.
(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)
Pessoalmente eu prefiro usar window-number.el
Para selecionar uma janela diferente, use Ctrl - x , Ctrl - j n
Onde n é o número da janela, o modeline de cada janela mostra que é número, como mostrado na imagem.
janela-number.el , coloque-o em sua emacs load-caminho e use 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 lhe dá grandes números nas janelas ... ( pressionando o número muda a janela e reverte o visor.)
Se você trabalhar com múltiplas janelas Emacs (> 3) muito e você vai querer salvar algumas teclas digitadas adicioná-lo ao seu arquivo de inicialização e você vai ser 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 é só passar rapidamente através das janelas com M-o
Existem algumas muito boas e completas respostas 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)
Base ideia de @Nate mas ligeiramente modificado para suportar para trás o ciclismo 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 à @Nate, @aspirin e resposta da @ Troydm eu achar que isso seja uma adição muito útil se você decidir vincular os comandos windmove para qualquer combinação de teclas que escolher:
(setq windmove-wrap-around t)
Com a configuração padrão, você receberá um erro quando você começa a tentar mover-se para uma janela que não existe o que se torna uma espécie de irritante depois de um tempo. No entanto, quando windmove-wrap-around é definido, em seguida, tentar mover para fora da parte inferior do quadro, por exemplo, em vez disso, selecione a janela de nível superior no quadro. Este pode ser um comportamento mais intuitiva para você.
Em referência à resposta de Nate, eu substituiu o arrow keys
usar o p
tradicional para ir up
, n
para ir down
, f
para ir right
e b
para ir left
. Eu também substituiu o Ctrl
com chave Super
como C-p, C-n, C-f and C-b
são as chaves do movimento padrão. Esta combinação com M
permite-lhe saltar personagens e linhas em vez de ir através de apenas um por um depois de cada tecla. Assim chave Super
sentiu a melhor escolha para mantê-lo uma chave fácil ligação. Além disso, agora você não tem que tirar a mão da linha de casa mais!
(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)))
alt j e alt k ciclo vontade por meio de seus Visibles tampões. Frente e para trás, para ser exato.
Já existe um pacote que permite alternar janelas usando M-. verificar este website . Adicione isto a seu arquivo de inicialização:
(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"