Подтвердить что ты не робот

Лучшая навигационная система в Emacs?

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

4b9b3361

Ответ 1

Вы пробовали 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

Я считаю, что привязка по умолчанию для 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!

Ответ 3

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

Ответ 4

В Icicles по умолчанию C-x o привязан к многокомандной команде icicle-other-window-or-frame, которая работает следующим образом:

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

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

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

Хорошо, тогда что icicle-select-window и icicle-select-frame?

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

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

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

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

Ответ 5

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

(windmove-default-keybindings 'meta)

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