Я использую C-tab для переключения окон:
(global-set-key [C-tab] 'other-window)
Удерживая нажатой клавишу Control, вы можете многократно перемещаться по окнам, просто нажимая клавишу Tab.
РЕДАКТИРОВАТЬ: мой оригинальный ответсодержал следующее
Я не думаю, что есть встроенный способ повторить последнюю команду для основных команд, подобных этой ...
Это больше не правда.Emacs теперь содержит repeat.el, который учитывает поведение, которое запрашивает rabidmachine9.
Следующий код создаст повторяющийся other-window
, такой, что после первого нажатия C-x o
, последующего нажатия o
продолжит переход к следующему окну.
(require 'repeat)
(defun make-repeatable-command (cmd)
"Returns a new command that is a repeatable version of CMD.
The new command is named CMD-repeat. CMD should be a quoted
command.
This allows you to bind the command to a compound keystroke and
repeat it with just the final key. For example:
(global-set-key (kbd \"C-c a\") (make-repeatable-command 'foo))
will create a new command called foo-repeat. Typing C-c a will
just invoke foo. Typing C-c a a a will invoke foo three times,
and so on.
See related discussion here:
http://batsov.com/articles/2012/03/08/emacs-tip-number-4-repeat-last-command/#comment-459843643
https://groups.google.com/forum/?hl=en&fromgroups=#!topic/gnu.emacs.help/RHKP2gjx7I8"
(fset (intern (concat (symbol-name cmd) "-repeat"))
`(lambda ,(help-function-arglist cmd) ;; arg list
,(format "A repeatable version of `%s'." (symbol-name cmd)) ;; doc string
,(interactive-form cmd) ;; interactive form
;; see also repeat-message-function
(setq last-repeatable-command ',cmd)
(repeat nil)))
(intern (concat (symbol-name cmd) "-repeat")))
(global-set-key (kbd "C-x o") (make-repeatable-command 'other-window))
Функция make-repeatable-command
, которая затем будет использоваться для создания других повторяющихся команд с использованием того же шаблона.