Gambaran umum tentang manajemen jendela Emacs
Reputasi dan potensi manajemen jendela
- Manajemen jendela Emacs memiliki reputasi yang kurang baik
- Ini sebagian besar merupakan hasil dari gabungan sistem tata letak yang sangat fleksibel dan terperinci dengan kontrol yang kasar
- Hal ini menyisakan ruang untuk membuat dan menggunakan alat yang menyediakan metafora dan affordance yang lebih baik untuk menangani jendela
Opsi dasar manajemen jendela
other-window dan "jendela berikutnya"
other-window (C-x o) memberikan pengalaman dasar untuk berpindah jendela
- Ini diajarkan dalam tutorial Emacs, dan bekerja baik saat jumlah jendela sedikit
- Pemilihan jendela berputar mengelilingi seluruh frame secara (kurang lebih) searah jarum jam
windmove
windmove adalah pustaka Emacs bawaan untuk memindahkan fokus antar jendela berdasarkan arah dan memindahkan buffer antar jendela
- Ini adalah fungsi yang diharapkan oleh pengguna Vim, dan pengguna
evil-mode kemungkinan sudah memakai Windmove
- Biasanya digunakan dengan mengikat
windmove-left, -right, -up, -down ke tombol yang terkait dengan arah
frames-only-mode
frames-only-mode memungkinkan penanganan jendela Emacs diserahkan ke OS
- Jika semua buffer dibuka di frame baru, ini menjadi tugas window manager
- Ini membuat buffer Emacs setara dengan jendela OS sehingga bisa dikelola dengan tombol yang sama
winum-mode
- Winum adalah perkembangan alami dari usaha berpindah di antara n jendela dari O(n) (
other-window) ke O(√n) (windmove), lalu ke O(1)
- Ini menambahkan nomor jendela ke mode line sehingga jendela bisa dipilih berdasarkan nomor
- Saat minibuffer aktif, nomor 0 selalu dialokasikan kepadanya
ace-window
- ace-window adalah bentuk paling canggih dari kontrol jendela Emacs berbasis keyboard
- Ini menempatkan "petunjuk" di bagian atas setiap jendela, dan saat tombol terkait ditekan, fokus berpindah ke jendela tersebut
- Jendela "dipilih" dengan cara umum, lalu pengguna memutuskan apa yang akan dilakukan terhadap jendela itu
- Selain operasi bawaan seperti menghapus, memindahkan atau menukar, membelah, dan menampilkan buffer, pengguna juga bisa menambahkan operasi kustom
Menggunakan mouse
- Keuntungan menggunakan mouse untuk manajemen jendela langsung dan jelas
- Memilih jendela adalah perpanjangan alami dari penggunaan mouse dasar, dan mengubah ukuran jendela juga sederhana
- Dukungan menu konteks dan drag-and-drop sangat intuitif
- Untuk mengurangi kekurangannya, jika mouse sudah digunakan untuk tugas lain, mengoperasikan Emacs dengan mouse justru bisa menjadi jalur dengan hambatan paling kecil
transpose-frame (rotate, flip, dan flop)
- transpose-frame menyediakan perintah untuk memutar atau mencerminkan tata letak jendela dalam frame
rotate-frame, flip-frame, flop-frame sering digunakan dengan mengikatnya ke tombol yang sesuai
window-prefix-map
window-prefix-map secara default diikat ke C-x w dan mengumpulkan beberapa perintah manajemen jendela yang berguna
split-root-window-right dan split-root-window-below membelah jendela root dari frame
tab-detach dan tear-off-window adalah perintah praktis untuk memindahkan jendela ke tab baru atau frame baru
other-window-prefix
other-window-prefix menyediakan cara untuk memisahkan pemilihan jendela dari penampilan buffer, dan menyelesaikan tiga ketidaknyamanan terkait jendela
- Banyak perintah Emacs menggabungkan operasi utama, buffer, dan jendela dengan sangat erat. Dengan
other-window-prefix, buffer dari perintah dapat ditampilkan di jendela lain
- Dengan
other-window-prefix, jendela bisa dipilih saat mengaktifkan objek seperti tautan
- Dengan
other-window-prefix, objek "tautan" bisa dibuka secara seragam tanpa perlu menyesuaikan atau mengkustomisasi perilaku tiap penulis paket
Menyimpan dan memulihkan konfigurasi jendela
window-configuration-to-register adalah alat yang agak tumpul, tetapi sempurna sebagai tombol reset merah besar
- Kapan saja, perintah ini bisa digunakan untuk menyimpan konfigurasi jendela saat ini ke register lalu memulihkannya dengan
jump-to-register
- Dengan
winner-mode, Anda bisa meminta Emacs memelihara stack susunan jendela masa lalu
Penjelajahan mendalam
Cara bolak-balik
- Terlepas dari berapa banyak jendela yang terbuka pada saat yang sama, dalam banyak kasus Anda hanya perlu berpindah di antara dua jendela
- Perintah
other-window-mru bisa digunakan untuk beralih di antara pasangan jendela
Meningkatkan other-window
other-window bisa dibuat untuk membelah frame jika hanya ada satu jendela
- Jendela bisa diputar berdasarkan urutan penggunaan terakhir alih-alih urutan spasial (
switchy-window package)
- Arah perpindahan jendela bisa dibalik setiap kali dipanggil sehingga pergantian di antara dua jendela terasa alami
Menggunakan sihir jendela dengan dispatch ace-window
ace-window melakukan terhadap jendela hal yang sama seperti completing-read terhadap daftar string
aw-select ideal untuk dua dari tiga langkah pertama (pemfilteran dan pemilihan) saat memanggil semua operasi pada semua jendela
ace-window-one-command memungkinkan memilih jendela dengan ace-window lalu menjalankan perintah sederhana apa pun pada jendela tersebut
ace-window-prefix mirip dengan other-window-prefix, tetapi memungkinkan pemilihan eksplisit jendela tempat buffer dari perintah berikutnya akan ditampilkan
Apakah perlu berpindah jendela?
- Perpindahan yang tidak terikat pada jendela dengan Avy adalah kasus khusus dari gagasan yang lebih umum
- Sebagai kontainer teks, jendela mungkin merupakan abstraksi yang tidak perlu
mark-ring dan global-mark-ring melacak lokasi yang telah dikunjungi sehingga memungkinkan perpindahan melintasi jendela bila perlu
- Dengan
point-to-register dan jump-to-register, Anda bisa menyematkan secara manual lokasi yang ingin dikunjungi nanti
- Membuat bookmark dan berpindah ke sana memberi banyak opsi untuk menjelajah lintas jendela ke lokasi bermakna yang dikenali oleh Emacs atau oleh pengguna
Menangani jendela agar tidak perlu berinteraksi dengan jendela
display-buffer-alist dan perilaku jendela otomatis bisa digunakan untuk menyelesaikan masalah jendela yang muncul-tenggelam seperti permainan whack-a-mole
- Menetapkan aturan untuk semua jenis buffer yang Anda lihat setiap hari di Emacs akan menyelesaikan sebagian besar manajemen jendela
- Masalah dengan
display-buffer-alist bukan karena tidak berfungsi, melainkan karena membutuhkan banyak pekerjaan
- Paket Shackle menutupi keanehan
display-buffer-alist dan menyediakan antarmuka elisp yang disederhanakan untuk menentukan aturan jendela
- Distribusi Emacs umumnya menyediakan antarmuka sederhana untuk menentukan pengaturan semacam ini
Popper, Popwin, shell-pop, dan vterm-toggle
- Popwin dan Popper didasarkan pada pengamatan bahwa tidak semua buffer diciptakan setara
- Paket-paket ini memungkinkan Anda menetapkan buffer popup yang menggunakan jendela sekunder, lalu memanggil dan menutup jendela itu sesuai kebutuhan
Bagian yang hilang
window-tree
- Ada perbedaan mendasar antara cara Emacs merepresentasikan jendela dan cara pendekatan yang dibahas di atas memanipulasinya
- Jendela dalam sebuah frame disusun sebagai pohon, dengan node daun sebagai jendela "nyata" dan sisanya sebagai jendela "internal"
- Menambahkan perintah untuk operasi window-tree akan membuka banyak kemungkinan baru
Integrator window manager tiling
- Model window-tree Emacs hampir identik dengan model window manager tiling manual seperti i3 atau bspwm
- Secara alami muncul pertanyaan mengapa harus menggunakan window manager tiling lain di dalam window manager tiling
- Menyediakan antarmuka yang lebih bersih dan terpadu di Emacs untuk integrasi dengan semua window manager dapat membuat hal ini jauh lebih mudah
Prospek
- Ada banyak cara untuk berpindah, bergerak, melewati, membuat, menghapus, dan memanipulasi jendela, berbagai cara untuk mengendalikan tampilan jendela secara langsung saat memanggil perintah, serta cara untuk bekerja di dalam jendela dan bahkan sama sekali tidak memikirkan jendela
- Manajemen jendela bukan rumit, melainkan terbuka
- Emacs menyediakan bahan dan beberapa petunjuk, dan bahan-bahan itu sendiri bisa dipakai sebagai hidangan dasar
- Namun dengan sedikit olahan, kita bisa membuat sesuatu yang lezat
Pendapat GN⁺
- Manajemen jendela adalah salah satu kelemahan terbesar Emacs dan tidak ramah pengguna. Terutama bagi pemula, hal ini bisa membingungkan.
- Metode-metode yang disajikan dapat meringankan masalah manajemen jendela Emacs, tetapi tidak menjadi solusi mendasar. Diperlukan sistem manajemen jendela yang lebih intuitif dan lebih mudah digunakan.
- Manajemen jendela Emacs sangat
1 komentar
Komentar Hacker News
Berikut rangkuman komentar di Hacker News:
ace-window,ace-window-display-mode, danframes-only-mode.windmove-modedan memungkinkan perpindahan jendela dengan Ctrl+tombol arah melalui(windmove-default-keybindings 'control).zygospore, setelah menutup jendela denganC-x 1, menekanC-x 1lagi dapat memulihkan tata letak jendela sebelumnya.hledger-balance-sheet, file journal tetap dibuka di sebelah kiri, lalu hasilnya ditampilkan di sebelah kanan dalam panel terpisah berukuran 30%.