Когда я разбиваю окно в emacs несколько раз (под терминалом), весь экран делится на несколько частей с иерархической компоновкой. В vim легко переключаться между окнами интуитивно с помощью Control-w + (h, j, k, l), но в Emacs я могу использовать Control-x + o для переключения в "другое окно", что, вероятно, потребует несколько итераций, чтобы наконец добраться до окна, которое я намерен. Интересно, есть ли лучший способ, подобный тому, что в Vim легко перемещаться между окнами?
Лучшая навигационная система в Emacs?
Ответ 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,...) при необходимости для уникального имени, если один и тот же буфер отображается в нескольких окнах/кадр.
Будучи мультикомандами, вы можете выбрать, выполнив и/или велоспорт. Завершение может быть префиксом, подстрокой, регулярным выражением или нечетким.
Ответ 5
Это был мой первый опыт работы с emacs. Но, используя windmove, я могу его подобрать, они так, как я хочу. Я использую это как модификатор для windmove:
(windmove-default-keybindings 'meta)
Я использую ALT для навигации windmove