Di Emacs, C-x o bawa saya ke jendela berikutnya.
Makro keyboard apa yang membawa saya ke jendela sebelumnya di Emacs?
Di Emacs, C-x o bawa saya ke jendela berikutnya.
Makro keyboard apa yang membawa saya ke jendela sebelumnya di Emacs?
Jawaban:
Anda mungkin juga ingin mencoba menggunakan gerakan angin yang memungkinkan Anda menavigasi ke jendela pilihan Anda berdasarkan geometri. Saya memiliki yang berikut ini di file .emacs saya untuk mengubah jendela menggunakan tombol panah 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)mengikat fungsi-fungsi ini ke SHIFT + atas / bawah / kiri / kanan, yang menurut saya lebih nyaman daripada C-xbinding Anda (yang bertentangan dengan binding default yang juga berguna untuk previous-bufferdan next-buffer. Lkahtz: (kbd)fungsi ini memungkinkan Anda menentukan kunci dalam notasi string dalam sintaks yang lebih mudah dibaca yang juga digunakan oleh Emacs saat Anda menggunakan C-h katau C-h cmenjelaskan pengikatan.
windmove-default-keybindingsuntuk menentukan pengubah berbeda untuk digunakan bersama dengan tombol panah; agar fungsinya tetap berguna bagi orang yang menggunakan mode pemilihan-shift.
Secara pribadi saya lebih suka menggunakan window-number.el
Untuk memilih jendela yang berbeda, gunakan Ctrl- x, Ctrl-j n
Di mana n adalah nomor jendela, modeline setiap jendela menunjukkan nomor itu, seperti yang ditunjukkan pada tangkapan layar.

Cukup unduh window-number.el , letakkan di jalur pemuatan emacs Anda dan gunakan perintah berikut di.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)
Ada mode serupa lainnya switch-window.elyang disebut yang memberi Anda angka besar di jendela ... (menekan angka akan mengalihkan jendela dan mengembalikan tampilan.)

(sumber: tapoueh.org )
C-x C-j, karena itu adalah pengikatan default dired-jumpjika Anda (require 'dired-x). (Lihat M-x customize-group RET dired-keys RETapakah Anda ingin menggantinya.)
switch-window.el, yang digunakan C-x osebagai gantinya, dan ketika hanya ada dua jendela yang aktif, itu hanya memilih jendela lain. Saya pikir itu paling bijaksana C-x ountuk melakukan window-numbertrik, Anda benar dired-jump. Secara pribadi saya melakukan lebih sedikit pengalihan jendela dan menggunakan C-x bdiri saya sendiri, tetapi memiliki peningkatan C-x ocukup menyenangkan.
Jika Anda bekerja dengan banyak jendela emacs (> 3) dan Anda ingin menyimpan beberapa penekanan tombol, tambahkan ini ke file init Anda dan Anda akan lebih baik:
(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)
Sekarang hanya siklus cepat melalui jendela dengan Mo
other-windowuntuk membuatnya bekerja.
Ada beberapa jawaban yang sangat bagus dan lengkap di sini, tetapi untuk menjawab pertanyaan dengan gaya minimalis:
(defun prev-window ()
(interactive)
(other-window -1))
(define-key global-map (kbd "C-x p") 'prev-window)
previous-window.
M-xsehingga harus melayani tujuan yang berbeda.
Berdasarkan ide dari @Nate tetapi sedikit dimodifikasi untuk mendukung perputaran mundur antar jendela
;; 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)
Hanya untuk menambahkan jawaban @Nate, @aspirin dan @ Troydm, saya menemukan ini sebagai tambahan yang sangat membantu jika Anda memutuskan untuk mengikat perintah windmove ke kombinasi tombol apa pun yang Anda pilih:
(setq windmove-wrap-around t)
Dengan konfigurasi default Anda akan mendapatkan kesalahan ketika Anda mencoba untuk pindah ke jendela yang tidak ada yang menjadi agak mengganggu setelah beberapa saat. Namun ketika windmove-wrap-around diatur, maka mencoba untuk keluar dari bagian bawah bingkai misalnya akan memilih jendela paling atas di bingkai. Ini mungkin perilaku yang lebih intuitif untuk Anda.
M-ndan M-psudah digunakan di terminal (gdb, python, ielm, dll.) Jadi Anda harus beralih kembali ke metode lain untuk keluar dari buffer terminal.
Mengacu pada jawaban Nate, saya mengganti arrow keysmenjadi menggunakan tradisional puntuk pergi up, npergi down, fpergi rightdan bpergi left. Saya juga mengganti Ctrldengan Superkunci seperti C-p, C-n, C-f and C-btombol gerakan default. Kombinasi dengan ini Mmemungkinkan Anda melompati karakter dan garis, bukan melalui satu per satu setelah setiap penekanan tombol. Dengan demikian Superkunci dirasa pilihan terbaik untuk menjaganya tetap menjadi kunci yang mudah mengikat. Juga, sekarang Anda tidak perlu melepaskan tangan Anda dari barisan rumah lagi!
(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)
Semoga membantu!
(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)))
altjdan altkakan menggilir buffer visibel Anda. Maju dan mundur, tepatnya.
Sudah ada paket yang memungkinkan Anda berpindah jendela dengan menggunakan M-. periksa situs web ini . Tambahkan ini ke file init Anda:
(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 zuntuk mengulangi perintah terakhir untuk beralih jendela dengan cepat.