Лучшая навигация по окну в Emacs? - PullRequest
20 голосов
/ 01 февраля 2011

Когда я делю окно в emacs несколько раз (под терминалом), весь экран делится на несколько частей с иерархическим расположением. В vim легко переключаться между окнами с помощью Control-w + (h, j, k, l), но в Emacs я могу использовать Control-x + o только для переключения на «другое окно», что, вероятно, потребует несколько итераций, чтобы наконец добраться до окна, которое я намереваюсь. Интересно, есть ли лучший способ, аналогичный тому, что в Vim, для удобной навигации между окнами?

Ответы [ 5 ]

30 голосов
/ 01 февраля 2011

Вы пробовали WindMove ? Он поставляется в комплекте с Emacs 21+. Вы перемещаетесь с Shift-up , Shift-down , Shift-left и Shift-right , хотя вы можете изменить модификатор. Из документов:

;; Installation:
;;
;; Put the following line in your `.emacs' file:
;;
;;     (windmove-default-keybindings)         ; shifted arrow keys
;;
;; or
;;
;;     (windmove-default-keybindings 'hyper)  ; etc.
;;
;; to use another modifier key.
;;
;;
;; If you wish to enable wrap-around, also add a line like:
;;
;;    (setq windmove-wrap-around t)
2 голосов
/ 01 февраля 2011

Я считаю связывание по умолчанию для other-window очень утомительным.В моем .emacs я определил следующее:

(global-set-key [(control ?,)] (lambda () (interactive) (other-window -1)))
(global-set-key [(control ?.)] (lambda () (interactive) (other-window 1)))

Просто найдите несколько удобных комбинаций клавиш (я использую раскладку Dvorak, поэтому C -, и C -. может быть не так легко для вас добраться), желательно прямо рядом друг с другом, чтобы связать эти лямбды.

Также я нашел Emacs wiki несколько месяцев спустя. Nifty Tricks имеет хороший список способов сделать Emacs проще в использовании!

1 голос
/ 20 августа 2011

In Сосульки , по умолчанию Cx o связан с мультикомандой icicle-other-window-or-frame, которая работает следующим образом:

  • Без префикса arg или ненулевого числового префикса arg: если выбранный кадр имеет несколько окон, то это other-window.В противном случае это other-frame.

  • с аргументом нулевого префикса (например, C-0 ): если выбранный кадр имеет несколько окон, то это icicle-select-window с окнами в раме в качестве кандидатов.В противном случае (однооконный фрейм) это icicle-select-frame.

  • При обычном Cu: если выбранный фрейм имеет несколько окон, то это icicle-select-window с окнами из всех видимых фреймовв качестве кандидатов.В противном случае это icicle-select-frame.

Ну, тогда что же такое icicle-select-window и icicle-select-frame?

Это мультикоманды, которые позволяют вам выбрать окноили кадр, чтобы выбрать по имени.(Вы можете связать их по отдельности, если хотите - каждый из них меняет свое поведение в зависимости от своих собственных префиксных аргументов.)

Имена окон и фреймов берутся из их отображенных буферов, с [N] (N= 1,2, ...) добавляется, если необходимо, к уникальному имени, если один и тот же буфер отображается в нескольких окнах / фреймах.

Будучи несколькими командами, вы можете выбирать, выполняя и / или циклически,Завершение может быть префиксом, подстрокой, регулярным выражением или нечетким.

http://www.emacswiki.org/emacs/Icicles_-_Multi-Commands

1 голос
/ 01 февраля 2011

См. switch-window.Он будет иметь номера окон, чтобы вы могли переключиться непосредственно на тот, который вам нужен.

0 голосов
/ 01 февраля 2011

Это был также мой первый опыт работы с emacs. Но, используя windmove, я могу выбрать то, что мне нужно. Я использую это как модификатор для windmove:

(windmove-default-keybindings 'meta)

Я использую ALT для навигации по ветру

...