В Emacs C-x oпереводить мене до наступного вікна.
Який макрос клавіатури переносить мене до попереднього вікна в Emacs?
В Emacs C-x oпереводить мене до наступного вікна.
Який макрос клавіатури переносить мене до попереднього вікна в Emacs?
Відповіді:
Можливо, ви також захочете спробувати використовувати windmove, який дозволяє перейти до вибраного вами вікна на основі геометрії. У моєму файлі .emacs є таке для зміни вікон за допомогою клавіші зі стрілкою Cx.
(global-set-key (kbd "C-x <up>") 'windmove-up)
(global-set-key (kbd "C-x <down>") 'windmove-down)
(global-set-key (kbd "C-x <right>") 'windmove-right)
(global-set-key (kbd "C-x <left>") 'windmove-left)
(windmove-default-keybindings)
прив'язує ці функції до SHIFT + вгору / вниз / вліво / вправо, що, на мою думку, є зручнішим, ніж ваші C-x
прив’язки (що суперечить також корисним прив'язкам за замовчуванням для previous-buffer
і next-buffer
. Lkahtz: (kbd)
функція дозволяє задавати ключі в нотації рядків у більш читабельному синтаксисі, який також використовується Emacs, коли ви використовуєте C-h k
або C-h c
для опису прив'язки
windmove-default-keybindings
вказати інший модифікатор, який використовуватиметься разом із клавішами зі стрілками; так що ця функція все ще може бути корисною для людей, які використовують режим вибору зсуву.
Особисто я вважаю за краще використовувати window-number.el
Щоб вибрати інше вікно, використовуйте Ctrl- x, Ctrl- j n
Де n - номер вікна, модель кожного з вікон показує його номер, як показано на скріншоті.
Просто завантажте window-number.el , помістіть його у свій шлях завантаження Emacs і використовуйте наступне у своєму.emacs
(autoload 'window-number-mode "window-number"
"A global minor mode that enables selection of windows according to
numbers with the C-x C-j prefix. Another mode,
`window-number-meta-mode' enables the use of the M- prefix."
t)
Існує ще один подібний режим, switch-window.el
який називається великим числом у вікнах ... (натискання номера перемикає вікно і повертає дисплей.)
(джерело: tapoueh.org )
C-x C-j
, оскільки це прив’язка за замовчуванням для dired-jump
вас (require 'dired-x)
. (Подивіться, M-x customize-group RET dired-keys RET
чи хочете ви це замінити.)
switch-window.el
перейти, і він використовує C-x o
натомість, і коли там активне лише два вікна, він просто вибирає інше вікно. Я вважаю, що найрозумніше переобв’язувати C-x o
цю window-number
трюк, ви цілком праві dired-jump
. Особисто я менше перемикаю вікна і використовую C-x b
себе, але покращення C-x o
дуже приємно.
Якщо ви багато працюєте з вікнами emacs (> 3), і вам захочеться зберегти кілька натискань клавіш, додайте це до свого файлу init, і вам буде краще:
(defun frame-bck()
(interactive)
(other-window-or-frame -1)
)
(define-key (current-global-map) (kbd "M-o") 'other-window-or-frame)
(define-key (current-global-map) (kbd "M-O") 'frame-bck)
Тепер просто швидко проїжджайте по вікнах за допомогою Mo
other-window
він працював.
Тут є кілька дуже хороших і повних відповідей, але щоб відповісти на питання мінімалістично:
(defun prev-window ()
(interactive)
(other-window -1))
(define-key global-map (kbd "C-x p") 'prev-window)
previous-window
вбудовано emacs .
M-x
тому вона повинна слугувати іншим цілям.
Заснований на ідеї від @Nate, але трохи змінений для підтримки зворотного руху між вікнами
;; Windows Cycling
(defun windmove-up-cycle()
(interactive)
(condition-case nil (windmove-up)
(error (condition-case nil (windmove-down)
(error (condition-case nil (windmove-right) (error (condition-case nil (windmove-left) (error (windmove-up))))))))))
(defun windmove-down-cycle()
(interactive)
(condition-case nil (windmove-down)
(error (condition-case nil (windmove-up)
(error (condition-case nil (windmove-left) (error (condition-case nil (windmove-right) (error (windmove-down))))))))))
(defun windmove-right-cycle()
(interactive)
(condition-case nil (windmove-right)
(error (condition-case nil (windmove-left)
(error (condition-case nil (windmove-up) (error (condition-case nil (windmove-down) (error (windmove-right))))))))))
(defun windmove-left-cycle()
(interactive)
(condition-case nil (windmove-left)
(error (condition-case nil (windmove-right)
(error (condition-case nil (windmove-down) (error (condition-case nil (windmove-up) (error (windmove-left))))))))))
(global-set-key (kbd "C-x <up>") 'windmove-up-cycle)
(global-set-key (kbd "C-x <down>") 'windmove-down-cycle)
(global-set-key (kbd "C-x <right>") 'windmove-right-cycle)
(global-set-key (kbd "C-x <left>") 'windmove-left-cycle)
Просто щоб додати відповіді @Nate, @aspirin та @ Troydm, я вважаю, що це дуже корисне доповнення, якщо ви вирішите прив'язати команди windmove до будь-якої вибраної комбінації клавіш:
(setq windmove-wrap-around t)
З конфігурацією за замовчуванням ви отримаєте помилку, коли спробуєте перейти до вікна, яке не існує, що через деякий час стає набридливим. Однак, коли встановлено обгортання вітровим рухом, наприклад, спроба відсунутися від нижньої частини кадру замість цього вибере найвище вікно у кадрі. Це може бути для вас більш інтуїтивною поведінкою.
M-n
і M-p
для мене найбільш зрозумілий, оскільки вони є аналогами C-n
( наступний рядок ) та C-p
( попередній рядок ):
(define-key global-map (kbd "M-p") 'previous-multiframe-window)
(define-key global-map (kbd "M-n") 'other-window)
M-n
і M-p
вже використовується в терміналах (GDB, пітон, ielm і т.д.) , так що вам доведеться перемкнутися на інший метод , щоб вискочити з термінального буфера.
Посилаючись на відповідь Нейта, я замінив arrow keys
на використання традиційного p
для поїздки up
, n
для поїздки down
, f
для поїздки right
та b
для поїздки left
. Я також замінив Ctrl
з Super
ключем , як C-p, C-n, C-f and C-b
це клавіші переміщення за замовчуванням. Ця комбінація M
дозволяє перестрибувати символи та рядки, а не проходити лише по одному після кожного натискання клавіші. Таким чином, Super
ключ вважав найкращим вибором, щоб зберегти його просту прив’язку клавіш. Крім того, тепер вам більше не доведеться знімати руку з домашнього ряду!
(global-set-key (kbd "s-p") `windmove-up)
(global-set-key (kbd "s-n") `windmove-down)
(global-set-key (kbd "s-f") `windmove-right)
(global-set-key (kbd "s-b") `windmove-left)
Сподіваюся, це допомагає!
(global-unset-key (kbd "M-j"))
(global-unset-key (kbd "M-k"))
(global-set-key (kbd "M-j") (lambda () (interactive) (other-window 1)))
(global-set-key (kbd "M-k") (lambda () (interactive) (other-window -1)))
altjі altkбуде переходити через ваші види буферів. Точніше вперед і назад.
Уже існує пакет, який дозволяє перемикати вікна за допомогою M-. перевірте цей веб-сайт . Додайте це до свого файлу init:
(require 'windmove)
(windmove-default-keybindings 'meta) ;; or use 'super to use windows key instead alt
(global-set-key (kbd "C-x a") 'ace-swap-window)
(global-set-key (kbd "C-x q") 'ace-select-window)
download ace-window from the melpa repo if you don't know how to do that
put this in your .emacs file if you don't have one create it
(package-initialize)
(require 'package)
(add-to-list 'package-archives '("melpa" , "http://melpa.org/packages/"))
(package-initialize)
then "m-x list-packages"
C-x z
для повторення останньої команди для швидкого перемикання вікон.