Pengguna Terminal Emacs Hadapi Tantangan Keybinding dan Temukan Kemungkinan Baru

Tim Komunitas BigGo
Pengguna Terminal Emacs Hadapi Tantangan Keybinding dan Temukan Kemungkinan Baru

Selama beberapa dekade, pengguna Emacs telah memperdebatkan keunggulan menjalankan editor teks yang kuat ini dalam mode terminal versus mode grafis. Sementara beberapa pengguna bersumpah dengan versi GUI yang memiliki kemampuan pratinjau gambar dan PDF, yang lain lebih memilih efisiensi ringan dari pengeditan berbasis terminal. Diskusi yang berlangsung ini mendapatkan energi baru saat pengguna berbagi solusi untuk masalah keybinding terminal yang persisten dan menemukan teknologi terminal baru yang dapat membentuk kembali pengalaman menggunakan Emacs.

Tantangan Keybinding Terminal

Menjalankan Emacs dalam mode terminal menghadirkan tantangan unik yang tidak pernah ditemui oleh pengguna GUI. Masalah mendasar berasal dari cara terminal emulator menangani input keyboard sebelum mencapai Emacs itu sendiri. Kombinasi tombol kompleks seperti Ctrl+Backspace sering kali berubah atau hilang dalam penerjemahan antara terminal dan aplikasi. Masalah ini menjadi lebih terasa bagi pengguna dengan tata letak keyboard non-QWERTY atau bahasa yang memerlukan karakter aksen.

Satu pengguna dengan tepat menangkap sentimen komunitas tentang keterbatasan terminal: Saya benar-benar tidak pernah memahami menjalankan Emacs di terminal, alih-alih menjalankan terminal di GUI Emacs. Perspektif ini menyoroti bagaimana banyak pengguna lebih memilih menyematkan fungsionalitas terminal dalam lingkungan Emacs grafis daripada pendekatan sebaliknya.

Solusi yang Muncul dan Protokol Terminal

Komunitas telah bersatu di sekitar beberapa solusi teknis untuk meningkatkan pengalaman Emacs terminal. Kitty Keyboard Protocol (KKP) telah muncul sebagai pendekatan yang menjanjikan, dengan pengguna melaporkan keberhasilan menggunakannya dengan terminal emulator seperti Kitty dan Ghostty. Protokol ini memungkinkan deteksi tombol yang lebih andal dan bahkan memungkinkan pemetaan super keybinding dan menukar tombol modifier - fungsionalitas yang sebelumnya tidak dapat diandalkan di lingkungan terminal.

Namun, adopsi solusi terminal tertentu telah memicu debatnya sendiri. Beberapa pengguna menyatakan kekhawatiran tentang telemetri di terminal emulator tertentu, mencatat bahwa Kitty menghubungi rumah, memberikan informasi ke server dengan telemetri opt-out daripada opt-in. Hal ini telah membuat beberapa anggota komunitas mengeksplorasi terminal alternatif yang menghormati privasi sambil menjaga kompatibilitas dengan protokol keyboard.

Emulator Terminal untuk Emacs

  • Kitty: Mendukung protokol KKP, teks berukuran variabel, tetapi memiliki telemetri opt-out
  • Ghostty: Kompatibel dengan KKP, alternatif yang fokus pada privasi
  • iTerm2 (macOS): Kompatibel dengan KKP tetapi mungkin tidak melaporkan tombol Super
  • Opsi bawaan: M-x shell (dasar), vterm (performa tinggi), eat (penanganan tombol lebih baik)

Arsitektur Client-Server dan Integrasi Sistem

Banyak pengguna Emacs yang berpengalaman telah melampaui penggunaan sederhana emacs -nw ke penyiapan client-server yang canggih. Pendekatan integrasi systemd, di mana Emacs berjalan sebagai daemon latar belakang dan pengguna terhubung melalui emacsclient, telah mendapatkan popularitas karena kecepatan dan efisiensinya. Arsitektur ini menghilangkan penundaan startup dan memungkinkan pembuatan frame instan sambil melestarikan status sesi.

Komunitas telah lebih menyempurnakan pendekatan ini dengan menjalankan server Emacs terpisah untuk antarmuka GUI dan terminal. Hal ini memungkinkan pengguna untuk mempertahankan konfigurasi yang berbeda untuk setiap lingkungan - menjaga tema terminal tetap konsisten gelap sambil memungkinkan tema GUI berubah sepanjang hari. Seperti yang dijelaskan satu pengguna, pemisahan ini memecahkan gangguan di mana perubahan, seperti tema, tercermin pada klien dan semua frame yang terhubung ke sana.

Perintah Terminal Emacs yang Umum

  • emacs -nw - Meluncurkan Emacs dalam mode terminal (tanpa jendela)
  • emacsclient -t - Terhubung ke server Emacs yang sudah berjalan dalam terminal
  • emacs-nox - Emacs yang dikompilasi tanpa dukungan GUI
  • systemctl --user start emacsd.service - Menjalankan Emacs sebagai layanan pengguna

Emulasi Terminal Dalam Emacs

Menariknya, banyak pengguna Emacs GUI menggunakan pendekatan sebaliknya - menjalankan terminal emulator dalam Emacs itu sendiri. Paket seperti vterm dan eat (Emulate A Terminal) telah berevolusi untuk menyediakan emulasi terminal berkinerja tinggi langsung di dalam buffer Emacs. Pengguna melaporkan bahwa eat terutama unggul di lingkungan terminal dengan lebih sedikit kedipan, dan tampaknya menangani penerusan tombol jauh lebih baik dibandingkan dengan alternatif.

Integrasi emulasi terminal dalam Emacs memang menghadirkan beberapa tantangan kompatibilitas, terutama bagi pengguna paket pengeditan modal seperti evil-mode. Beberapa paket terminal memiliki masalah dengan posisi kursor dan perintah navigasi dalam mode normal, memerlukan solusi atau penyesuaian konfigurasi untuk berfungsi dengan lancar dengan alur kerja pengeditan yang populer.

Protokol Teknis Utama

  • KKP (Kitty Keyboard Protocol): Memungkinkan deteksi tombol yang andal di terminal
  • OSC-52: Protokol terminal untuk akses clipboard dalam build nox
  • Child Frames: Fitur terminal yang akan datang untuk elemen UI mengambang
  • Systemd Services: Metode untuk menjalankan Emacs sebagai daemon latar belakang

Pengembangan Masa Depan dan Antusiasme Komunitas

Pengalaman terminal Emacs terus berkembang dengan fitur mendatang yang menghasilkan kegembiraan signifikan. Cabang master Emacs sekarang mendukung child frame dalam mode terminal, sebuah perkembangan yang disorot oleh satu anggota komunitas sebagai memungkinkan menu pelengkapan otomatis mengambang, kotak notifikasi, interaksi seperti dialog - semua kemungkinan menarik yang telah kita miliki di GUI untuk waktu yang lama.

Kemajuan ini dapat secara signifikan mempersempit kesenjangan fitur antara terminal dan Emacs grafis, membawa elemen UI yang canggih kepada pengguna terminal. Selain itu, terminal seperti Kitty telah memperkenalkan kemampuan teks berukuran variabel, yang pada akhirnya dapat mengaktifkan pengubahan ukuran font per-frame di terminal Emacs - fitur yang saat ini eksklusif untuk versi GUI.

Eksplorasi komunitas Emacs yang berkelanjutan tentang integrasi terminal menunjukkan kemampuan adaptasi editor yang luar biasa. Baik melalui protokol keyboard yang ditingkatkan, arsitektur client-server, atau emulasi terminal yang disematkan, pengguna terus menemukan cara inovatif untuk menyesuaikan lingkungan pengeditan mereka dengan alur kerja dan preferensi tertentu. Dialog antara pendukung terminal dan GUI pada akhirnya menguntungkan semua pengguna dengan mendorong perbaikan di kedua antarmuka.

Referensi: Emacs in the terminal: keybindings, client and more