Mengapa menggunakan tombol panah dalam mode normal dianggap praktik buruk?


43

Saya telah membacanya di banyak artikel ( misalnya ) bahwa praktik buruk menggunakan tombol panah dalam mode normal. Adakah yang bisa menjelaskan mengapa itu dianggap praktik yang salah?


5
Salah satu alasan bagus untuk tidak menggunakan hjkl adalah jika Anda menggunakan tata letak keyboard lain. Sebagai contoh, hjkl tidak berkorelasi spasial dalam Dvorak dan karenanya sulit digunakan.
Kylos

1
@ Kylos saya gunakan hjkldi Dvorak. Ini jelas kurang masuk akal daripada di qwerty, tapi saya tidak tahu bahwa saya akan menyebutnya "sulit digunakan"; mereka hanya kunci, dan tidak sulit untuk menjangkau mereka atau apa pun begitu Anda terbiasa.
Dougal

2
Ada banyak mitos mengapa hjklharus menjadi pilihan terbaik untuk bergerak dalam dokumen. Yang benar adalah, beberapa keyboard memiliki tombol panah hjkldi saat vi dibuat, jadi vi menggunakan tombol yang sama dalam mode normal untuk mencocokkan tata letak keyboard. Ini adalah artikel dengan foto keyboard: catonmat.net/blog/why-vim-uses-hjkl-as-arrow-keys
allo

8
Apa pun yang memiliki reputasi kesulitan ... menarik perhatian orang tertentu. Crossfit, Vim, pemrograman fungsional, veganisme, dll. Sekarang tentu saja tidak semua orang yang melakukan salah satu dari kegiatan itu adalah semacam itu, tetapi mereka sering muncul secara tidak proporsional. Dan bagian dari daya pikat bagi orang itu adalah kesulitan dari kegiatan itu sendiri . Hal-hal yang menurunkan bilah untuk masuk adalah laknat bagi mereka: itu membuat mereka kurang istimewa. Ada alasan untuk memilih hjkl. Bagus Tetapi mereka meningkat ke status dogma, setidaknya sebagian, karena orang harus merasa bahwa mereka lebih baik daripada yang lain.
Jared Smith

@ Kylos Saya setuju bahwa hjklini bukan yang terbaik di dvorak. Tetapi sebagai pengguna dvorak saya dapat menemukan mereka sedikit berguna karena mereka dipasangkan bersama: seperti di jksatu sisi papan; dan hl di sisi lain.
nilon

Jawaban:


66

Sebenarnya ini bukan praktik yang buruk.

Banyak orang ( termasuk Vim's doc seperti yang diperlihatkan oleh @B Layer ) berpendapat bahwa Anda tidak boleh menggunakan tombol panah karena itu membuat tangan Anda bergerak dari baris rumah (baris kedua keyboard Anda di mana Anda miliki hjkl) dan itu membuat Anda kurang efisien .

Ini (setidaknya IMO) hasil buruk dari brm lingkaran "purists" brengsek: pengguna baru mengikuti ini secara membabi buta, beberapa bahkan menonaktifkan tombol panah dan kemudian mereka mengeluh bahwa mereka tidak seefisien sebelumnya.

Satu-satunya aturan nyata untuk penggunaan vim adalah dengan menggunakannya secara efisien: jika Anda merasa lebih nyaman menggunakan Leftdan Rightdari hdan l baik itu, gunakan tombol panah. Vim bahkan memiliki set mouse=aopsi jika Anda ingin menggunakan mouse!

Setelah Anda terbiasa dengan vim dan lebih baik dengan gerakan yang berbeda tersedia ( f, t, ,, ;, w, b, e, ge, dan pada dasarnya segala sesuatu di :h quickref) Anda mungkin menyadari bahwa Anda lakukan penggunaan tidak tombol panah yang banyak. Dan jika Anda masih menggunakannya, tidak masalah, gunakan apa yang paling efisien untuk Anda.

Perhatikan bahwa argumen jangan tinggalkan baris beranda untuk efisiensi lebih tidak baik menurut saya: Jika Anda melihat Mengapa vim menggunakan hjkl Anda akan melihat bahwa kunci ini dipilih karena tidak ada panah kunci ketika Vi ditulis. Orang bisa berpendapat bahwa mungkin jika keyboard berbeda pada saat ini, tidak ada yang akan menganggap tidak menggunakan tombol panah sebagai praktik yang baik.


13
Saya sering mendapati diri saya menekuk pergelangan tangan saya dengan sangat buruk untuk mencapai tombol panah karena saya sudah terbiasa dengannya. Saya akhirnya menonaktifkan tombol panah untuk membiasakan diri hjklhanya untuk menghilangkan rasa sakit dari pergelangan tangan saya.
Shahbaz

9
Saya ingin menunjukkan bahwa ini hanya masuk akal pada keyboard QWERTY. Untuk beberapa tata letak, hjkl bisa sangat menyakitkan.
coteyr

1
Anda dapat menggunakan kedua opsi: apakah Anda memilih hjkl atau panah, Anda dapat mengikat set lain tombol naik / turun untuk bergerak berdasarkan garis di layar dan bukan file baris. Ini membantu saat mengedit file dengan garis panjang.
user31389

1
Saya belum menyadari sebelum membaca jawaban Anda bahwa saya jarang menggunakan tombol hjkl dan panah karena saya terbiasa dengan perintah gerak lanjutan yang Anda sebutkan. Poin bagus!
Spiros

4
Namun banyak saya menghargai jawaban yang benar untuk-saya-mata Anda, bisa saya harap membujuk Anda sebagai sesama moderator dan vi aficionado ke mencoba Anda paling sulit untuk menemukan beberapa kurang “kumuh” ungkapan alternatif untuk lingkaran brengsek yang tidak membangkitkan gambar jelas mengganggu dari cincin tanpa celana anak laki-laki atau laki-laki semua masturbasi bersama di perusahaan masing-masing‽ Cukup menyenangkan? :)
tchrist

40

Saya tidak tahu apakah ini benar-benar relevan lagi, tapi saya sudah tua jadi inilah sedikit sejarah.

Di masa lalu, terminal VT100 memiliki tombol panah, tetapi menekan satu mentransmisikan urutan melarikan diri seperti <ESC>[Auntuk naik, <ESC>[Bturun, dll.
Juga, menjadi terminal serial yang berkomunikasi pada 9600 baud, mungkin bagi pengguna untuk menekan tombol terlalu cepat untuk mentransmisikan seluruh urutan yang akan menyebabkan satu tekan tombol untuk mengganggu urutan penekanan tombol sebelumnya dan membingungkan vi.

Ini akan menyebabkan vi secara misterius masuk ke mode penyisipan dan menyisipkan [B [B [B [B [B [B [B] ke dalam file Anda jika Anda menahan panah ke bawah. Saya katakan secara tidak dapat dijelaskan karena tidak ada apapun tentang urutan ini yang harus masuk ke mode insert dan fakta bahwa setiap urutan dimulai dengan karakter ESC harus keluar dari mode insert. Tapi tetap saja, itu akan memasukkan sampah. Tidak selalu - hanya ketika Anda sedang terburu-buru.

Seseorang dengan cepat bosan dengan ini dan memutuskan untuk hanya memegang hjklkunci.


8
Untuk alasan apa pun, program terminal TCP masih menggunakan tombol panah berbasis escape, dan masih belum memiliki 100% cara yang dapat diandalkan untuk membedakan antara menekan tombol escape dibandingkan mengirim byte pertama dari urutan escape panah-key.
supercat

1
@supercat Mereka memang memiliki cara yang dapat diandalkan untuk membedakannya. Ini disebut menggunakan SC81T . Masalahnya adalah lebih banyak program tidak bernegosiasi dan beberapa terminal mungkin tidak mendukungnya.
jamessan

1
@ jamessan: Jika saya membacanya dengan benar, Anda menyarankan bahwa cara yang dapat diandalkan untuk membedakan escape dari tombol panah adalah dengan tidak menggunakan tombol panah berbasis escape, yang terkait dengan komentar "untuk alasan apa pun" saya tentang program yang masih menggunakan escape- tombol panah berbasis.
supercat

Hmm, saya punya terminal IBM lama yang bisa meniru VT100, mungkin harus mencobanya
earwig

3
Saya pasti dapat mengkonfirmasi bahwa ini benar, paling tidak jalan-mundur, karena selama tahun 80-an kami harus memasang tanda-tanda di ruang terminal sarjana untuk tidak menggunakan tombol panah di vi karena alasan ini. Mereka terus mengacaukan file mereka ketika pengemudi tty menjatuhkan interupsi.
tchrist

28

Sementara saya setuju dengan @statox bahwa tidak ada yang harus dihukum, dijauhi, dikucilkan, atau tar-and-feathered jika mereka memilih untuk menggunakan tombol panah ... gunakan perangkat lunak Anda sesuai keinginan Anda ... Saya tidak akan keluar sebagai banyak dari sikap laissez-faire jika saya memberikan panduan kepada pengguna baru yang berpikiran terbuka. Saya sangat menyarankan mereka memulai dengan mengikuti praktik terbaik. Itu adalah "praktik terbaik" karena suatu alasan ... mereka telah dipekerjakan dengan baik oleh banyak orang yang datang sebelum Anda dan saya.

Heck, bahkan bantuan Vim sendiri mendorong Anda ke arah itu , meskipun bukan tanpa hiperbola (" sangat melambat") ...

Anda juga dapat memindahkan kursor dengan menggunakan tombol panah. Namun, jika Anda melakukannya, Anda sangat memperlambat pengeditan karena untuk menekan tombol panah, Anda harus memindahkan tangan Anda dari tombol teks ke tombol panah. Menimbang bahwa Anda mungkin melakukannya ratusan kali dalam satu jam, ini bisa memakan banyak waktu.

Ada juga fakta bahwa pilihan apa pun yang Anda buat di awal mungkin menjadi kebiasaan yang sulit dihilangkan jika Anda ingin berubah di masa depan. Jadi semua makhluk lain sama mengapa tidak mengadopsi kebiasaan direkomendasikan sekarang daripada mengambil kesempatan yang menggunakan tombol panah adalah tidak efisien atau carpal-pembunuhan?

Secara keseluruhan, pertimbangkan untuk memberikan upaya jujur ​​untuk melakukan sesuatu tanpa tombol panah. Setelah jumlah waktu yang masuk akal jika Anda tidak bisa hidup tanpa naik / turun / kiri / kanan ... jangan.

... adalah apa yang akan saya katakan kepada pengguna baru yang tertarik dengan pendapat saya. Jangan tersinggung jika Anda tidak setuju (saya berbicara dengan Anda, downvoter).


9
Bahkan jika Anda menerima bahwa itu memang lebih baik daripada tombol panah (saya bahkan tidak yakin itu) itu ada di suatu tempat di bagian bawah daftar semua "praktik terbaik" yang mungkin. Saya berpendapat bahwa ada banyak banyak hal yang lebih penting daripada menggunakan hjkl.
Martin Tournoij

5
@Carpetsmoker Saya pikir tidak perlu memberi peringkat praktik terbaik. Kecuali Anda memiliki keinginan kuat untuk menggunakan tombol panah, mengapa tidak melakukan seperti yang Vim rekomendasikan? Khususnya jika Anda baru mengenal Vim ... kita semua tahu betapa sulitnya mengubah cara kita melakukan sesuatu begitu sudah tertanam.
B Layer

1
"Anda sangat memperlambat penyuntingan Anda" - yang sepertinya terlalu berlebihan bagi saya ... namun saya setuju ada baiknya mencobanya. Jujur saja tidak cukup penting untuk diperebutkan.
Bayangan

2
@BLayer no not here - ini adalah diskusi paling sipil tentang topik yang saya pikir telah saya lihat. Tapi perang tentu saja telah terjadi ...
Shadow

1
don't think it's necessary to rank best practicesMenurut saya, kita harus fokus pada hal-hal yang memberi kita nilai terbaik dalam hidup, mengingat sumber daya yang terbatas dan bahwa hidup ini singkat. Saya kebetulan tahu kunci hjkl hati karena masa kecil yang salah bermain nakal, larn, angband, dll pada laptop tanpa numpad, tetapi beberapa orang menghabiskan masa kecil mereka lebih baik, dan harus "melepaskan" tombol panah terlepas. Saya pikir gerakan belajar, rentang, dll. Adalah cara yang jauh lebih berguna untuk menghabiskan waktu.
Martin Tournoij

16

Jawaban lain mengatakan bahwa kehilangan efisiensi dari memindahkan tangan Anda dari barisan rumah bukan masalah besar, dan saya kebanyakan setuju. Namun, apa yang masalah besar adalah ketika Anda belajar vim, selalu menggunakan tombol panah untuk menghindari beralih kembali ke mode normal.

Dengan kata lain, menggunakan satu di mana Anda akan menggunakan satu hbukanlah kerugian besar dalam produktivitas, tetapi menggunakan di mana Anda bisa menggunakan EscI adalah kerugian besar.

Itulah sebabnya orang-orang memberitahu Anda untuk menghindari tombol panah ketika Anda belajar vim, karena itu memaksa Anda untuk belajar mode normal daripada tidak pernah meninggalkan mode insert. Mode normal adalah tempat semua efisiensi Anda berada.


1
+1. Dengan kata lain: "Jangan gunakan tombol panah, dan jangan gunakan hjkl." (Mempertahankan hiperbola yang disengaja.)
wchargin

3
Sebenarnya, bukannya 10 kali Anda bisa menggunakan 1 0 atau, bahkan lebih sederhana Home,. Yang terakhir ini berfungsi bahkan di Windows Notepad.
Ruslan

7

Ada dua alasan utama mengapa orang mengatakan Anda tidak boleh menggunakan tombol panah. Beberapa mengklaim bahwa hjkl lebih disukai karena menjaga tangan Anda di baris rumah, yang tidak salah , tetapi juga tidak masalah. Orang lain, termasuk saya, akan mengatakan Anda tidak boleh menggunakan tombol panah jika Anda memindahkan lebih dari beberapa karakter, tetapi Anda juga tidak boleh menggunakan hjkl.

Yang penting bukan kunci mana yang Anda gunakan, tetapi berapa banyak . Jika Anda ingin pindah ke awal kata, Anda tidak menekan hhh; kamu memukul b. Akhir kata itu e, bukan llll. Awal baris: 0, akhir baris: $. Dan apa pun lebih jauh, /searchuntuk teks yang ada di mana Anda ingin pergi. (atau perintah gerakan lanjutan mana saja yang Anda inginkan).

Tetapi setiap kali Anda menemukan diri Anda mengetik kunci yang sama lebih dari dua kali berturut-turut, ada cara yang lebih baik untuk melakukannya.


7

Pernyataan yang lebih tepat mungkin "menggunakan tombol panah adalah praktik yang buruk saat mencoba belajar vim lebih baik " . Orang yang baru mengenal vim terbiasa menggunakan tombol panah untuk bergerak sehingga tidak belajar hjkl, sehingga tidak mendapat kesempatan untuk melihat apakah ini lebih disukai.

Secara pribadi, setelah mendapatkan keakraban umum dengan vim, saya menonaktifkan tombol panah untuk sementara waktu untuk memahami hjkldan mengaktifkannya kembali nanti untuk menyederhanakan saya .vimrc. Kebijaksanaan konvensional berlaku dalam kasus saya; begitu saya tahu cara menggunakan keduanya hjkldan tombol panah, saya menemukan diri saya hampir secara eksklusif menggunakan yang pertama.


6
Saya tidak setuju. Seperti yang dikatakan blog ini , bahwa "semua atau tidak sama sekali" pendekatan untuk pemula membantu menyebabkan "vim tidak ramah" reputasi. Pengguna baru mulai, terjebak dan kewalahan dan (tidak mengherankan) menyimpulkan vim adalah kekacauan yang tidak suci dan kembali ke editor di mana mereka dapat menjadi produktif. - Jika Anda belajar berenang, Anda tidak membuang perahu ke laut terbuka. Sangat dapat diterima untuk mendayung anjing di sekitar kolam anak-anak sampai Anda merasa nyaman dengan air.
RM

2
... bukan untuk mengatakan bahwa menonaktifkan tombol panah tidak akan berfungsi untuk orang. Tapi ini adalah langkah "Saya suka vim dan ingin belajar bagaimana menggunakannya dengan lebih baik", bukan langkah "Saya baru untuk vim dan ingin belajar cara menggunakannya".
RM

5

Jawaban yang biasa melibatkan efisiensi. Anda mungkin telah dilatih selama bertahun-tahun untuk menggunakan pengetikan sentuh, yang menggunakan tangan Anda pada asdf dan jkl ;. Sebagian besar ikatan utama di Vi dirancang berdasarkan fakta ini, termasuk perintah pergerakan hjkl.

Secara pribadi saya sebenarnya menggunakan keduanya. Saya menggunakan hjkl ketika saya secara aktif mengedit bagian besar teks, dan tombol panah ketika menggulir file log (dan |, g, dan / ketika saya melakukan pengeditan spot di seluruh file). Ini kebetulan yang berfungsi baik untuk saya, dan dalam kasus seperti ini, itulah yang benar-benar penting.


2

Dahulu, banyak terminal tidak memiliki tombol panah, atau tidak memiliki keempatnya. Sistem perangkat lunak yang memerlukan navigasi biasanya menyediakan semacam pendekatan navigasi tanpa bergantung pada tombol panah, dan vi's hjkl adalah contoh kanonik. (Contoh klasik lainnya adalah WordStar ^ E- ^ S- ^ X- ^ D.) Ketika utilitas navigasi keyboard menjadi semakin jelas, semakin banyak terminal baru mulai datang dengan tombol panah, dan sistem perangkat lunak sering memetakannya dengan cara lama. navigasi. Namun, ini memberikan semacam perhatian portabilitas: jika anak-anak yang dilatih di sekolah datang untuk mengandalkan fitur baru-ketinggalan jaman seperti tombol panah, pemikirannya adalah, mereka mungkin tidak dapat menjadi produktif pada - dulu umum - keyboard tanpa tombol panah.

Jadi, guru kursus ke komputasi dasar mulai dengan hati-hati memperingatkan siswa untuk belajar menggunakan penyebut umum terendah untuk memaksimalkan kemampuan kerja mereka. Dan praktik ini telah lama melampaui alasan yang mungkin pernah dimiliki.

Dalam implementasi vi modern, alasan utama untuk memilih hjkl adalah karena sedikit lebih cepat menggunakan kunci yang sudah ada di bawah tangan Anda daripada memindahkan tangan Anda ke mana pun tombol panah Anda. Kelemahan dari menghindari saklar konteks tangan Anda, tentu saja, adalah bahwa Anda mungkin perlu melakukan saklar konteks vi. Saat ini, ketika manusia sangat jarang dihargai dengan mengetik kecepatan, apakah Anda melakukan satu atau yang lain cukup banyak masalah preferensi pribadi, dan tidak ada yang buruk secara inheren tentang menggunakan tombol panah lagi, jika memang pernah ada.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.