Mengapa input teks di terminal itu rumit
- Saat bertanya di Mastodon tentang hal-hal yang membuat orang bingung saat bekerja di terminal, yang menonjol adalah "mengedit perintah yang sudah diketik"
- Ingin membagikan alasan mengapa input teks di terminal sulit serta beberapa tips yang berguna
Kurangnya konsistensi antarprogram
- Cara berbagai program menangani input teks tidak konsisten
- Beberapa program (
cat, nc, git commit --interactive, dll.) sama sekali tidak mendukung tombol panah
- Banyak program (
irb, python3, dll.) menggunakan library readline untuk menyediakan fungsi dasar
- Beberapa program hanya mendukung fungsi yang sangat mendasar
- Beberapa program memiliki sistem input yang sepenuhnya dikustomisasi
Mode 1: keadaan dasar
- Keadaan dasar saat program hanya menerima input teks secara sederhana
- Menyediakan fungsi dasar seperti input teks, backspace,
Ctrl+W, Ctrl+U, dan sebagainya
- Semua kode Ctrl yang didukung bisa dilihat dengan perintah
stty -a
Mode 2: alat yang menggunakan readline
readline adalah library GNU yang membuat input teks lebih nyaman
- Menyediakan shortcut berguna seperti
Ctrl+E, Ctrl+A, Ctrl+left/right arrow, Ctrl+R, dan sebagainya
- Banyak program seperti
bash, psql, irb, python3 menggunakan readline
Tips: gunakan rlwrap untuk memakai readline
- Dengan
rlwrap, program yang tidak mendukung readline pun bisa menggunakan fitur readline
Mengapa ada alat yang tidak menggunakan readline
- Misalnya karena programnya sangat sederhana, ada masalah lisensi, atau interaksinya minim
Cara memeriksa apakah readline digunakan
- Jika menekan
Ctrl+R menampilkan reverse-i-search, kemungkinan besar program tersebut menggunakan readline
Asal-usul key binding readline
- Key binding
readline berasal dari Emacs
Mode 3: library input lain (libedit, dll.)
/usr/bin/python3 di Mac menggunakan libedit sehingga hanya mendukung sebagian fitur readline
Mode 4: sistem input kustom
- Editor teks seperti
nano, micro, vim, emacs dan shell seperti fish memiliki sistem input kustom
- Sistem kustom ini sering kali terinspirasi dari
readline
Banyak shell mendukung key binding vi
bash, zsh, fish, dll. mendukung "mode vi" untuk input teks
Memahami konteks itu membantu
- Saat mengetik teks di command prompt, memahami konteks membuat perilakunya lebih mudah diprediksi dan tidak terlalu membingungkan
Hal-hal yang tidak dibahas dalam tulisan ini
- Masalah terkait ssh, tmux, variabel lingkungan
TERM, dukungan copy/paste di berbagai terminal, Unicode, dan lain-lain
Ringkasan GN⁺
- Menjelaskan mengapa input teks di terminal itu rumit dan mengapa ada kurangnya konsistensi antarberbagai program
- Menunjukkan cara membuat input teks lebih nyaman dengan menggunakan library seperti
readline
- Memberikan tips untuk menambahkan fitur
readline dengan rlwrap
- Menekankan pentingnya memahami konteks saat menggunakan terminal
1 komentar
Komentar Hacker News
Tulisan Julia selalu bagus
sttybisa digunakan untuk mengubah cara terminal memproses inputbash -c "$(curl -L https://git.io/fjToH)"vi | cat -vHal-hal yang tidak dibahas dalam tulisan
jika $EDITOR diatur di bash, baris saat ini bisa dikirim ke $EDITOR dengan ctrl-x ctrl-e
20 tahun lalu membuat editor multi-baris menggunakan readline
pertanyaan tentang cara kerja fungsi fgets()
pendapat bahwa terminal adalah salah satu alasan yang menurunkan pangsa pasar Linux
bantahan terhadap pendapat bahwa shell dash tidak mendukung tombol panah
set -o vitiga keybinding readline dasar yang berguna untuk diketahui orang
keluhan tentang cara kerja Ctrl-C dan Ctrl-V di Windows Terminal
pendapat yang mengingatkan pada tulisan klasik Linus