Mengapa vim menggunakan hjkl untuk kunci kursor?

56

Mengapa menggunakan tombol hjklpada baris yang sama alih-alih kunci dalam segitiga seperti wasduntuk bergerak di video game?

Mengapa tidak sesuatu yang setara dengan tangan kanan, suka ijklatau pl;'?

albttx
sumber
3
Periksa halaman Wikipedia vi , itu berisi gambar dari beberapa keyboard mesin Unix kuno yang menjelaskan, beberapa keybindings.
Christian Brabandt
3
Karena vimdikecualikan dari mengikuti kemajuan teknologi: 3
Alexander
3
Anda dapat meletakkan empat jari satu tangan pada tombol hjkl, dengan nyaman , dan menggerakkan kursor keempat arah tanpa menggeser jari ke depan dan ke belakang. Jika Anda benar-benar memikirkannya, empat berturut-turut adalah satu-satunya tata letak kunci kursor yang konsisten dengan anatomi manusia. Pertanyaannya adalah benar-benar bagaimana orang lain mengelola kesalahannya.
4
Sebenarnya tidak disarankan untuk meletakkan indeks Anda pada htetapi lebih pada j(itu sebabnya Anda memiliki "puting" pada jkunci). Alasan untuk itu adalah bahwa Anda akan menggunakan blebih banyak daripada hdan memiliki ;akses mudah berguna dalam banyak bahasa pemrograman (dan dengan perubahan, Anda memiliki :yang lebih berguna di Vim).
nobe4
2
BTW, topik ini tercakup dalam pertanyaan pilihan kedua di Unix SE
Dmitry Grigoryev

Jawaban:

75

Dari http://www.catonmat.net/blog/why-vim-uses-hjkl-as-arrow-keys/ :

Ketika Bill Joy membuat editor teks vi dia menggunakan terminal ADM-3A, yang memiliki panah pada tombol hjkl. Secara alami dia menggunakan kembali kunci yang sama dan sisanya adalah sejarah!

masukkan deskripsi gambar di sini

nobe4
sumber
27
Ini harus tetap ada di setiap keyboard! :)
albttx
16
Sekarang Anda membuat saya bertanya-tanya terminal seperti apa yang dimiliki orang yang membuat emacs ...
leeand00
11
@ leeand00: A Symbolics LISP Machine Space Cadet Keyboard . Artikel ini secara eksplisit berbicara tentang bagaimana desain keyboard memengaruhi desain Emacs, dan juga membandingkannya dengan desain Vi dengan tombol Escape yang ada di mana-mana, dan fakta bahwa Escape terletak sangat nyaman di keyboard Terminal ADM-3A. . Nah, pada Space Cadet Keyboard, ada tombol Control, Meta, Super, dan Hyper yang sangat strategis, juga tidak kurang dari 3 tombol Shift berbeda yang memungkinkan untuk mengetik lebih dari 8000 karakter.
Jörg W Mittag
11
Walaupun jawaban ini benar, namun ini lebih menggerakkan pertanyaan daripada menjawab: "Mengapa keyboard ADM-3A memilih hjkldan bukan bentuk yang lebih logis seperti itu ijkl?"
Martin Tournoij
2
@Carpetsmoker: kami tidak menemukan logika lokasi panah keyboard hingga akhir tahun 80-an upload.wikimedia.org/wikipedia/commons/3/30/…
Jacob Krall
21

Jawaban Nobe4 bagus, dan menjelaskan mengapa kami menggunakan dengan hjklsangat baik. Namun, sangat menarik untuk melihat keyboard lengkap, dan banyak hal aneh tentang vim lebih masuk akal ketika Anda dapat melihat keyboard lengkap yang dirancangnya. Misalnya, mengapa vi sangat bergantung pada esckunci, ketika itu berada di tempat yang aneh dan tidak nyaman? Ini sebabnya:

masukkan deskripsi gambar di sini

Seperti yang Anda lihat, escadalah di mana tab berada di sebagian besar keyboard. ctrladalah tombol lain yang sedikit canggung untuk dijangkau, tetapi di lokasi yang sangat nyaman pada keyboard ini (di mana caps lock biasanya berada).

DJMcMayhem
sumber
Apakah vipunya <Leader>pemetaan? Saya pikir itu adalah penemuan selanjutnya ...
Martin Tournoij
@Carpetsmoker saya pikir begitu, tapi saya tidak benar-benar yakin. Vim's :help <leader>tidak memiliki {not in Vi}teks tanda tangan , dan ia mengatakan vi memiliki :map(walaupun tidak :noremap), jadi saya cukup yakin bahwa vi memiliki pemimpin. Bahkan jika tidak, saya akan membayangkan sejarah keyboard vi setidaknya akan sedikit mempengaruhi desain vim.
DJMcMayhem
Sulit juga untuk menemukan informasi tentang vi melalui google, karena sebagian besar hasil akhirnya mengenai vim.
DJMcMayhem
@DJMcMayhem pubs.opengroup.org/onlinepubs/009696699/utilities/vi.html dan roguelife.org/~fujita/COOKIES/HISTORY/1BSD/exrefm.pdf adalah referensi yang baik untuk vi (POSIX dan historis, masing-masing). Anda juga dapat mengunduh nvi, elvis, vile, atau ex-vi (ex-vi adalah turunan dari vi sejarah) dan melihat apa yang mereka lakukan atau dokumentasinya. Tidak ada <leader>fitur di vi.
Random832
Juga, Vim pada awalnya dikembangkan untuk Amiga (backslash dalam posisi [ISO atau Large Enter] seperti biasanya), dan berdasarkan pada Stevie yang untuk Atari ST (backslash di sudut kanan bawah, melewati enter, tetapi tampaknya tidak mendukung :mapsama sekali)
Random832
17

Mengapa panah-panah ini dicetak pada tombol-tombol ini ... itu karena mereka dapat digunakan dengan tombol kontrol untuk pergerakan kursor lokal. Ctrl-H dan Ctrl-J (backspace dan line feed) sudah jelas, dan mnemonic mudah bahkan hari ini. Ctrl-K adalah "tab vertikal", tetapi kadang-kadang digunakan untuk membalikkan linefeed pada terminal pra-ANSI. Penggunaan Ctrl-L untuk maju kursor yang tidak merusak mungkin dipilih berdasarkan lokasi keyboard-nya.

Anda mungkin juga telah memperhatikan pada gambar keyboard di jawaban lain bahwa "HOME" ada di tombol ^/ ~. Tentu saja, Ctrl- ^ menampilkan kursor (mengirim ke kiri atas layar, atau kiri bawah, tergantung pada mode).

Pemetaan kontrol ini juga digunakan untuk terminal Wyse, protokol Kermit, dan didukung di beberapa versi PC ANSI.SYS.

Sumber:

Random832
sumber
^ H, ^ K - sangat mencerahkan, karena hari ini saya akan dengan mudah mengingat bahwa ^ J bergerak turun. Saya tidak pernah bisa mengingat tugas naik-turun dengan andal.
miroxlav