Как быстро переключаться между окнами?
У меня часто открыто несколько окон, и мне нужно переключаться между ними. Прямо сейчас я использую, C-x o
чтобы добраться до того, кого я хочу. Есть ли более эффективный рабочий процесс для этого?
window
cycling
navigation
Сиби
источник
источник
Ответы:
Я, очевидно, предпочитаю туз-окно для этого. Вы можете переключаться между видимыми окнами и фреймами. Это в MELPA, вы можете установить его быстро. Осталось только связать это:
Или, возможно, используйте более короткий ключевой аккорд, так как переключение окон является обычной задачей:
Резюме
ace-window
Это замена для замены
other-window
. В отличие от последнего, вам никогда не придется звонитьace-window
два или более раз, чтобы выбрать окно: вы выбираете нужное окно за один вызов (возможно, в нескольких кадрах).Помимо переключения окон,
ace-window
можно сделать больше (удалять или менять окна и т. Д.), См. README .источник
ace-window
а затем увидел,switch-window
что, кажется, делает примерно то же самое, за исключением того, что буквы более выражены. кажется смешным, у нас есть оба пакета.switch-window
пока не подчинилсяace-window
MELPA.ace-window
, он имеет больше настроек, чем другие пакеты, я думаю. Тем не менее, в будущем может оказаться полезной ключевая привязка к функции, которая аналогична действию «умная замена», но поглощает это окно, в результате чего в точке появляется большее окно и выбранное окно меньшего размера (съеденное). до окна). Соотношение должно быть определено в этом случае как половина, четверть или треть.Одним из способов является использование
windmove
. Благодаря назначенным по умолчанию сочетаниям клавиш он позволяет переключаться в окно рядом с текущим активным окном.Он встроен в Emacs, поэтому устанавливать его не нужно; просто активируйте его с минимальной настройкой в вашем файле инициализации:
Вы можете переключиться на соседние окна с помощью следующих клавиш (где стрелка используется интуитивно определяет направление , в котором вы двигаетесь):
S-<left>
,S-<right>
,S-<up>
,S-<down>
.Если вы предпочитаете использовать другой модификатор вместо shift, вы можете указать его в качестве аргумента
windmove-default-keybindings
. Например:или же
Больше информации на Emacs Wiki .
источник
(windmove-default-keybindings 'meta)
как это предлагается в EmacsWiki.Shift-arrow
) , но когда у вас большой монитор с большим количеством делений, такое движение быстро становится громоздким. Было бы интереснее как-то перечислить windows / split. Какace-window
, но с меньшим количеством нажатий клавиш и очевидным алгоритмом, чтобы сразу выяснить, какое число вы хотите.Вы можете связать
other-window
с более легкой для ввода последовательности клавиш.Например, я
C-.
привязалсяother-window
иC-,
должен перейти к предыдущему окну.Это особенно полезно для перемещения нескольких окон; удерживая нажатой клавишу «Управление», достаточно нажать одну кнопку, чтобы перейти к следующему окну. Это намного проще, чем три нажатия клавиш за ход.
источник
C-x o
forother-window
- один из немногих претендентов на звание «наихудший по умолчанию ярлык emacs». Мое решение (похожее на zck) состояло в том, чтобы повторно привязатьother window
к (более простой) последовательности клавиш - с ней я связанC-;
(и мояCaps-Lock
поменялась местами,Ctrl
поэтому все, что нужно, это быстрое нажатие мизинцев). Кстати, я полностью зависим от определенных функцийhelm
иicicles
(то есть я не "антипакет" или что-то еще); Я просто думаю, что простое решение работает лучше всего здесь.M-o
дляother-window
. Некоторые режимы уже имеютM-o
обязательный характер , в частностиdiff-mode
,ggtag-mode
иibuffer-mode
. Вы должны вручную отсоединить его в каждой карте режима.unbind-key
предоставленоbind-key.el
очень полезно.M-o
также использую иM-O
обязуюсь,ace-window
когда мне понадобится дополнительная сила.window-numbering.el!
Я назначаю горячую клавишу ", 1", ", 2", ", 3" для переключения конкретного окна (обратите внимание, я использую злой режим)
кроме того, я отображаю номер окна в строке режима в розовом цвете, подчеркнут.
Это визуальный намек, который нельзя игнорировать,
Это самый быстрый способ переключить окно.
проверьте https://github.com/redguardtoo/emacs.d/blob/master/lisp/init-evil.el и https://github.com/redguardtoo/emacs.d/blob/master/lisp/init-modeline .el для моей настройки.
Сильвен Беннер перенял мою идею в spacemacs, но сочетания клавиш разные . Поэтому, если вы используете spacemacs, вы получите самое быстрое решение из коробки.
источник
window-number
сM-<num>
для быстрого переключения ч / б окон. Концепция похожа на этуБез использования каких-либо дополнительных надстроек вы можете продолжать использовать
C-x o
с дополнительным префиксом, чтобы пропустить такое количество окон. Например:C-u 1 C-x o
перейдет к следующему окну в порядке (то есть, что вы получите с обычнымC-x o
),C-u 2 C-x o
переместится через два окна, перевернется черезC-u 3 C-x o
три окна и так далее.Выдержка из
other-window
строки документации (функция вызываетсяC-x o
:источник
Некоторые люди могут помнить редактор Brief (как ни странно, выпущенный компанией Underware).
У этого был аккуратный способ переключаться между видимыми окнами. M-стрелка будет перемещать курсор в окно непосредственно в направлении с направлением стрелки.
Таким образом, я отобразил
winmove-left
,winmove-right
,winmove-up
иwinmove-down
функциюM-left
,M-right
,M-up
иM-down
следующие клавиши в моем файле .emacs -Теперь я могу с легкостью перемещаться между окнами, независимо от того, насколько я перегружен конфигурацией ... И в настоящее время она может быть довольно загромождена размером дисплеев ...
источник
(windmove-default-keybindings 'meta)
!Если вы используете Icicles, то
C-x o
можете выбирать окна по имени (или ездить на велосипеде).Без префикса arg,
C-x o
является таким же, как обычно,other-window
если только у фрейма нет только одного окна, в этом случае это такother-frame
.С префиксом arg,
C-x o
это мульти-команда, которая позволяет вам перемещаться между окнами или фреймами по имени (или циклически). Навигация между окнами использует много командicicle-select-window
; навигация между кадрами используетicicle-select-frame
.Какая навигация используется, зависит от префикса arg:
Аргумент нулевого префикса (например
C-0
): если выбранный кадр имеет несколько окон, то это означаетicicle-select-window
, что окна находятся в том же кадре, что и кандидаты. В противном случае (однооконный фрейм) это такicicle-select-frame
.C-u
: Если выбранный кадр имеет несколько окон, то это означаетicicle-select-window
, что окна всех видимых кадров являются кандидатами. В противном случае это такicicle-select-frame
.C-u C-u
:icicle-select-window
, с окнами из всех кадров в качестве кандидатов (в том числе иконизированных или скрытых кадров).Как всегда в Icicles , вы можете объединить (a) завершение , набрав текст, чтобы сузить набор подходящих кандидатов (в данном случае имен окон или фреймов), с (b) циклическим (среди подходящих кандидатов).
источник
Рассмотрите возможность использования клавишного аккорда для быстрого перехода между окнами. Я нахожу это намного быстрее, чем тянуться к клавише-модификатору (и также меньше напрягаю руки).
Я выбрал пакет
ace-window
, который позволяет вам перемещаться по нескольким окнам проще, чем простоother-window
.Очевидно, что использовать это вам нужно,
key-chord
иace-window
оба доступны в Melpa.источник
ace-window
выполняет работу, как в ответе @ abo-abo. Меня поражает, что в этом контексте конкретное связывание клавиш будет иметь больше смысла как комментарий, а не как ответ. Просто мои два цента.key-chord
связывать очень доступные комбинации клавиш. Пример привязкиxo
быстрее, чемC-x o
(глубина от одного до двух). Этот ответ можно перефразировать, чтобы подчеркнуть, что ответ ортогонален другим ответам о выборе функций (иace-window
является лишь одним из многих вариантов, которые могут быть связаны описанным способом). Держите этот ответ как отдельный!Некоторые хорошие ответы здесь, я также фанат WinMove, но я связываю его с C-, потому что режим org использует M- для манипулирования заголовками
Что действительно хорошо получается, так это объединить его с Hydra . Следуя примерам в их вики, я создал своего собственного монстра:
Это позволяет мне изменять окна, изменять их размер, перемещать буферы из окна в окно, циклически менять буферы, уничтожать буферы и даже отменять конфигурации окон в режиме победителя, а также интегрирует helm. Чтобы выйти из гидры, просто нажмите стрелку или другую клавишу, не входящую в гидру. Вы можете найти функции «hydra-move» на примерах Hydra. Отличительной особенностью Hydra является то, что мне не нужно запоминать все эти сочетания клавиш и их «модерирование», поэтому, как только вы попадаете в Hydra, все становится одним ключом. Нажмите.
источник
(windmove-default-keybindings 'control)
.Если вы используете
evil-mode
, вы можете просто использовать числовой префикс сC-w C-w
(evil-window-next
), чтобы выбрать нужное окно. Итак:1 C-w C-w
выбирает первое окно в циклическом порядке,3 C-w C-w
выбирает третье окно в циклическом порядке и так далее.источник
Ace Jump позволяет вам перемещать указатель ко всем словам на экране, независимо от того, в каком окне или фрейме они находятся, поэтому он не так уж отличается от использования Ace Window или Switch Window.
Преимущество может заключаться в том, что при переходе через окна вы также можете разместить указатель с некоторой точностью.
Я все еще нахожу это немного громоздким или отвлекающим и обнаруживаю, что использую
windmove
больше, потому что это очень просто, но все же использую Ace Jump, когда я читаю в другом окне или фрейме и хочу переместиться туда.источник
Как обычно, есть сотня разных способов сделать это. Мой предпочтительный способ - использовать NumberedWindows . Затем я установил следующее связывание клавиш, используя Super и клавиши 1-9.
Я немного подробнее расскажу об этой теме в моем недавнем посте, который вы можете прочитать в программе « Дневной кодер» .
источник
Вы также можете использовать переключатель в качестве визуальной замены
C-x o
источник
switch-window
поверх всех остальных?