У меня есть emacs в полноэкранном режиме, работающий через терминал и разделенный на 4 окна одинакового размера. Вместо того, чтобы использовать C-x o для перехода в другое окно, я бы хотел жестко закодировать команды для перехода в каждое окно.

Возможно, я мог бы сделать команды следующим образом:

  1. C-w C-i - верхнее левое окно
  2. C-w C-o - верхнее правое окно
  3. C-w C-k - нижнее левое окно
  4. C-w C-l - нижнее правое окно

  5. Что я могу добавить в свой файл ~/.emacs чтобы установить 4 команды глобального ключа для переключения между всеми 4 экранами, как показано выше?

1 ответ1

1

Вы можете написать простую функцию и установить привязки клавиш.

(defun select-nth-window (n)
  "Focus Nth window"
  (interactive)
  (set-frame-selected-window (selected-frame)
                 (frame-first-window))
  (set-frame-selected-window (selected-frame)
                 (nth n (window-list))))

(global-set-key (kbd "C-w C-i") '(lambda ()
                   (interactive)
                   (select-nth-window 0)))
(global-set-key (kbd "C-w C-o") '(lambda ()
                   (interactive)
                   (select-nth-window 2)))
(global-set-key (kbd "C-w C-k") '(lambda ()
                   (interactive)
                   (select-nth-window 1)))
(global-set-key (kbd "C-w C-l") '(lambda ()
                   (interactive)
                   (select-nth-window 3)))

Изменить: я не знаю, как сохранить макет окна, но Emacs Wiki: Управление сессиями может помочь вам.

Вы также можете узнать больше о emacs lisp из Справочного руководства по программированию в Emacs Lisp и Emacs Lisp.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .