Чому vim використовує hjkl для клавіш курсору?


56

Навіщо використовувати клавіші hjklна одній лінії замість клавіш у трикутнику, як wasdдля пересування відеоігор?

Чому б не щось еквівалентне правою рукою, як-от ijklабо pl;'?


3
Перевірте, чи є на Вікіпедії сторінка vi , вона містить зображення старовинної клавіатури Unix, яка пояснює, деякі клавіатурні вкладки.
Крістіан Брабандт

3
Тому що vimзвільнено не відставати від технологічного прогресу: 3
Олександр

3
Можна зручно покласти чотири пальці однієї руки на клавіші hjkl і перемістити курсор у всі чотири напрямки, не зміщуючи пальці вперед і назад. Якщо ви дійсно задумаєтесь, чотири поспіль - це єдиний макет клавіші курсору, що відповідає анатомії людини. Питання справді в тому, як усім іншим вдається помилитися.

4
Насправді не рекомендується ставити свій індекс на, hа скоріше на j(саме тому у вас є "соска" на jключі). Причина для цього є те , що ви будете використовувати bнабагато більше , ніж hта має ;доступ до зручно в багатьох мовах програмування (і зі зсувом, у вас є :що - небудь більш зручно в Vim).
nobe4

2
До речі, ця тема висвітлюється у другому головному питанні на Unix SE
Дмитро Григор'єв

Відповіді:


75

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

Коли Білл Джой створив текстовий редактор vi, він використав термінал ADM-3A, на якому були стрілки на клавішах hjkl. Природно, він повторно використовував ті самі ключі, а решта - історія!

введіть тут опис зображення


27
Це все одно має бути на кожній клавіатурі! :)
albttx

16
Тепер ви мене цікавите, який термінал мав хлопець, який робив emacs ...
leeand00

11
@ leeand00: Символіка LISP Machine Space Cadet Keyboard . У статті чітко йдеться про те, як дизайн клавіатури вплинув на дизайн Emacs, а також порівнює його з дизайном Vi з його всюдисущим клавішею Escape, а також про те, що Escape був дуже зручно розташований на клавіатурі терміналу ADM-3A . Ну, на клавіатурі Space Cadet є дуже зручні клавіші Control, Meta, Super і Hyper , а також не менше 3 різних клавіш Shift, що дозволяють набрати понад 8000 символів.
Йорг W Міттаг

11
Хоча ця відповідь правильна як така, вона як би переносить питання, а не відповідати на нього: "Чому вибрала клавіатура ADM-3A, hjklа не більш логічну форму на зразок ijkl?"
Мартін Турноїй

2
@Carpetsmoker: ми не вигадали логіку розташування стрілок на клавіатурі до кінця 80-х upload.wikimedia.org/wikipedia/commons/3/30/…
Jacob Krall

21

Відповідь Nobe4 чудова і пояснює, чому ми hjklдуже добре використовуємо . Однак побачити повну клавіатуру дуже цікаво, і багато дивних речей про vim мають більше сенсу, коли можна побачити повну клавіатуру, на якій він був розроблений. Наприклад, чому vi так сильно покладається на escключ, коли він знаходиться в такому дивному і незручному місці? Ось чому:

введіть тут опис зображення

Як бачите, escна більшості клавіатур вкладка знаходиться. ctrl- це ще одна клавіша, яку трохи незручно дістати, але в дуже зручному місці на цій клавіатурі (там, де зазвичай заблоковано шапки).


У вас viбуло <Leader>картографування? Я думав, що це пізніший винахід ...
Мартін Турной

@Carpetsmoker Я думаю, що так, але я насправді не впевнений. У Vim :help <leader>немає {not in Vi}тексту підпису , і він говорить, що vi мав :map(хоча і ні :noremap), тож я впевнений, що у vi був лідер. Навіть якби цього не було, я думаю, що історія клавіатури vi хоч би дещо вплинула на дизайн vim.
DJMcMayhem

Також важко знайти інформацію про vi через google, оскільки більшість результатів стосується vim.
DJMcMayhem

@DJMcMayhem pubs.opengroup.org/onlinepubs/009696699/utilities/vi.html та roguelife.org/~fujita/COOKIES/HISTORY/1BSD/exrefm.pdf - хороші посилання на vi (POSIX та історичний відповідно). Ви також можете завантажити nvi, elvis, vile чи ex-vi (ex-vi - нащадок історичних vi) та подивитися, що вони роблять чи їх документацію. У <leader>vi немає жодної особливості.
Випадково832

Крім того, Vim спочатку був розроблений для Amiga (зворотний косий рядок у звичайній позиції [ISO або Large Enter]), і базувався на Стіві, який був для Atari ST (зворотний косий кут в нижньому правому куті, минулий вхід, але, мабуть, це не було підтримка :mapвзагалі)
Random832

17

Щодо того, чому ці стрілки були надруковані на цих клавішах ... це тому, що їх можна використовувати за допомогою клавіші управління для руху місцевого курсору. Ctrl-H і Ctrl-J (зворотний простір та канали ліній) очевидні, і просто сьогодні мнемонічні. Ctrl-K є "вертикальною вкладкою", але іноді використовувався для зворотного подачі ліній на термінали, що попередньо ANSI. Використання Ctrl-L для неруйнівного пересування курсору, ймовірно, було вибрано виходячи з його розташування на клавіатурі.

Можливо, ви також помітили на малюнку клавіатури в іншій відповіді, що "HOME" знаходиться на клавіші ^/ ~. Звичайно, Ctrl- ^ розміщує курсор (надсилає вгорі зліва екрана або вліво вліво, залежно від режиму).

Ці контрольні відображення використовувались також для терміналів Wyse, протоколу Kermit і підтримувалися в деяких версіях ПК ANSI.SYS.

Джерела:


^ Н, ^ К - дуже просвітницький, адже сьогодні я легко згадаю, що ^ J рухається вниз. Я ніколи не міг надійно запам’ятати призначення завдання вгору.
miroxlav
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.