Neden vim, imleç tuşları için hjkl kullanıyor?


56

Video oyunlarında olduğu hjklgibi neden üçgenin içindeki tuşları yerine aynı satırdaki anahtarları kullanmalısınız wasd?

Neden olmasın, sağ eli ile eşdeğer gibi bir şey ijklya pl;'?


3
Vi Vikipedi sayfasını kontrol edin , bazı anahtarlıklar açıklayan bazı eski Unix makine klavyesinin bir resmini içeriyor .
Christian Brabandt

3
Çünkü vimteknolojik gelişmelere ayak uydurmaktan muaf tutuluyor: 3
Alexander

3
Bir elin dört parmağını hjkl tuşlarına rahatça koyabilir ve imleci dört yöne hareket ettirmeden parmakları ileri ve geri hareket ettirebilirsiniz. Gerçekten düşünürseniz, üst üste dördü insan anatomisi ile tutarlı olan tek imleç tuş yerleşimidir. Asıl soru, gerçekten herkesin yanlış anlamayı başarabilmesi.

4
Aslında, dizininizi bunun üzerine koymak hyerine tavsiye edilmez j(bu yüzden janahtarın üzerinde bir "meme ucu" vardır ). Bunun nedeni, bçok daha fazlasını kullanmanız hve ;erişilebilir olmanızın pek çok programlama dili için kullanışlı olmasıdır (ve bir kayma ile :Vim'de daha da kullanışlı olanı vardır).
nobe4

2
BTW, bu konu Unix
SE'deki

Yanıtlar:


75

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

Bill Joy, vi text editörünü yarattığında, hjkl tuşlarında okları olan ADM-3A terminalini kullandı. Doğal olarak aynı anahtarları tekrar kullandı, gerisi tarih!

görüntü tanımını buraya girin


27
Bu hala her klavyede olmalı! :)
albttx

16
Şimdi bana emacs yapan adamın ne tür bir terminali olduğunu merak ettin ...
leeand00

11
@ leeand00: Bir Sembolik LISP Makine Uzay Harbiyeli Klavye . Makale, klavyenin tasarımının Emacs'ın tasarımını nasıl etkilediğini ve aynı zamanda her yerde bulunan Escape tuşuyla Vi'nin tasarımını karşılaştırdığını ve Escape'in ADM-3A Terminalinin klavyesinde çok uygun bir şekilde konumlandırıldığını açık bir şekilde anlatıyor. . Eh, Space Cadet Klavyesinde 8000'den fazla karakter yazmanıza izin veren 3 farklı Shift tuşunun yanı sıra çok uygun bir şekilde konumlandırılmış Kontrol, Meta, Süper ve Hiper tuşları da var .
Jörg W Mittag

11
Bu cevap doğru olsa da, soruyu cevaplamak yerine soruna yönlendirir: "ADM-3A klavyesi neden hjkldaha mantıklı bir şekli seçmedi ve neden daha mantıklı bir şekil seçmedi ijkl?"
Martin Tournoij

2
@Carpetsmoker: 80'lerin sonlarına kadar klavyenin ok yeri mantığını icat etmedik. Upload.wikimedia.org/wikipedia/commons/3/30/…
Jacob Krall

21

Nobe4'ün cevabı harika ve neden hjklçok iyi kullandığımızı açıklıyor . Ancak, tam klavyeyi görmek gerçekten ilginç ve vim ile ilgili birçok garip şey, üzerinde tasarlandığı tam klavyeyi görünce daha mantıklı geliyor. Örneğin, neden bu kadar esctuhaf ve rahatsız bir yerdeyken vi, neden bu kadar ağır bir şekilde güveniyor ? Bu nedenle:

görüntü tanımını buraya girin

Gördüğünüz gibi escsekmenin çoğu klavyede olduğu yerdir. ctrlUlaşılması biraz zor olan, ancak bu klavyede çok rahat bir konumda bulunan (başka bir deyişle büyük harf kilidi olan) başka bir anahtardır.


vibir var <Leader>eşleme? Bunun daha yeni bir buluş olduğunu düşündüm ...
Martin Tournoij

@Carpetsmoker Sanırım öyle, ama tam emin değilim. Vim'in :help <leader>imza {not in Vi}metni yok ve vi'nin :map(her ne kadar olmasa da :noremap) olduğu yazıyor, bu yüzden vi'nin lideri olduğuna eminim. Etmedi bile, en azından olur vi klavyenin geçmişini hayal ediyorum biraz vim tasarımını etkilemektedir.
DJMcMayhem

Sonuçların çoğu vim ile sonuçlandığından, vi hakkında google üzerinden bilgi bulmak da zor.
DJMcMayhem

@DJMcMayhem pubs.opengroup.org/onlinepubs/009696699/utilities/vi.html ve roguelife.org/~fujita/COOKIES/HISTORY/1BSD/exrefm.pdf vi için iyi referanslardır (sırasıyla POSIX ve tarihsel). Ayrıca, nvi, elvis, aşağılık veya ex-vi'yi (ex-vi, tarihsel vi'nin soyundandır) indirebilir ve ne yaptıklarına veya belgelerine bakabilirsiniz. <leader>Vi'de özellik yok .
Random832

Ayrıca, Vim orijinal olarak Amiga için (her zamanki [ISO veya Large Enter] konumunda ters eğik çizgi) pozisyonu için geliştirildi ve Atari ST için olan Stevie'ye dayandı (sağ alt köşede ters eğik çizgi, geçmişte girdi, ancak görünüşte yoktu) hiç destek :map)
Random832 24:16

17

Bu okların neden bu tuşlara basıldığına gelince ... bunun nedeni yerel imleç hareketi için kontrol tuşuyla kullanılabilecekleri. Ctrl-H ve Ctrl-J (geri alma ve satır besleme) açık ve bugün bile kolay bir anımsatıcı. Ctrl-K "dikey sekme" dir, ancak bazen ANSI öncesi terminallerde ters satır besleme için kullanılmıştır. Yıkıcı olmayan bir imleç ileri için Ctrl-L kullanımı muhtemelen klavye konumuna göre seçildi.

Klavyenin resminde, "HOME" un ^/ ~tuşunun üzerinde olduğu cevabını da fark etmiş olabilirsiniz . Elbette, Ctrl- ^ imleci barındırır (ekrana bağlı olarak ekranın sol üst kısmına veya sol alt tarafa gönderir).

Bu kontrol eşlemeleri Wyse terminalleri, Kermit protokolü için de kullanıldı ve PC ANSI.SYS'in bazı versiyonlarında desteklendi.

Kaynaklar:


^ H, ^ K - çok aydınlatıcı, bugünden beri ^ J'nin aşağı indiğini kolayca hatırlayacağım. Yukarı-aşağı inme işlemini güvenilir bir şekilde hatırlayamadım.
miroxlav
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.