Bagaimana sejarah tentang tombol Shift + Arrow di terminal?

21

Aku bertanya-tanya mengapa Shift+ Arrow Keyhasil di salah satu A, B, Catau Dhuruf.

Kenapa bukan surat lain? Kenapa ada surat?

Dan
sumber
Menarik: D Taruhan saya?
Terkait
2
Hanya sebuah pengamatan: di tty Shift + Arrow Keystidak melakukan apa-apa.
Radu Rădeanu
@Rinzwind: :)))
Radu Rădeanu
1
Saya mengajukan pertanyaan ini di Unix / Linux Stack Exchange. Ada beberapa jawaban yang bermanfaat. Mungkin Anda ingin melihatnya. unix.stackexchange.com/questions/73669/…
yfklon

Jawaban:

27

Terminal emulator seperti gnome-terminal("Terminal" di Ubuntu) tetapi juga xtermdan urxvtdinamai "emulator" karena mereka mereproduksi perilaku terminal lama yang merupakan satu-satunya tampilan komputer. Terminal semacam itu berkomunikasi dengan komputer dengan protokol berbasis teks dan pada awalnya dirancang untuk hanya menerima teks. Dengan cepat, lebih banyak kontrol diperlukan: bagaimana cara menghapus garis? Gunakan warna? Atau ubah posisi kursor?

Terminal VT-100 Sumber: Seni Kegunaan Unix - Antarmuka Baris Perintah

Escape sequence dirancang untuk setiap terminal untuk melakukan hal-hal seperti itu. Mereka diberi nama melarikan diri karena mereka mulai dengan kode escape ASCII: 33. Tidak ada cara untuk mencetak karakter seperti itu secara langsung, yang membuatnya cocok untuk urutan seperti itu. Ketika kami masih ingin menampilkan karakter ini, ^[[sudah digunakan, dan inilah yang akan saya gunakan dalam penjelasan saya.

Ketika terminal diterima ^[[A, itu tidak berarti "print ^ [[A", tetapi "pengguna menekan tombol panah atas". "A" di sini benar-benar arbitrer: kebetulan huruf yang disetujui semua orang, karena itulah yang DEC VT-52 dan penggantinya terminal VT-100 yang populer digunakan.

DEC VT-52 Pemeliharaan Manuel 1976

Sumber: DEC VT-52 Manual Pemeliharaan 1976

Ini masih merupakan cara kerja emulator terminal hari ini: tergantung pada $TERMvariabelnya, database bernama terminfobertanggung jawab untuk mengatakan kode apa yang harus dikirim ke shell (bash, sh, zsh ...), yang kemudian bertanggung jawab untuk memahami mereka dan bereaksi ke mereka.

Sekarang, kode untuk Shift+ upadalah ^[[1;2A: terminal emulator mengirimkan kode ini ke shell, yang mencoba menafsirkan ^[[1;2tetapi tidak menampilkan apa-apa karena tidak tahu tentang urutan pelarian itu. Tetapi Adibiarkan dan ditampilkan.

Jennifer Wilson
sumber
5
Wow, menarik. Sekarang semua ^[[Amasuk akal ketika saya mengklik tombol panah saat proses sedang berjalan di terminal.
Dan
4
Anda bisa menekan CTRL-v sebelum Anda menekan SHIFT-UpArrow untuk 'melihat' urutan pelarian dalam bentuk mentah. Kecuali Anda telah mengubah default, ESC akan muncul di layar terminal Anda sebagai ^ [
arielf
@ diri Anda juga dapat menjalankan cat >/dev/nulllalu mengetik, dan tekan Ctrl + C (atau Enter lalu Ctrl + D) setelah selesai.
wjandrea