Чому використання клавіш зі стрілками у звичайному режимі вважається поганою практикою?


43

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


5
Однією з вагомих причин не використовувати hjkl є використання іншої розкладки клавіатури. Наприклад, hjkl не є просторово корельованими у Dvorak і тому їх важко використовувати.
Kylos

1
@Kylos я використовую hjklв Двораку . Це, безумовно, менш розумно, ніж на qwerty, але я не знаю, що я б назвав це "складним у використанні"; вони просто ключі, і це не так, як важко дістатись до них чи чогось, коли ви звикли до цього.
Дугал

2
Існує багато міфів, чому hjklмає бути найкращим варіантом переміщення в документі. Правда полягає в тому, що на деяких клавіатурах увімкнено клавіші зі стрілками hjklпід час створення vi, тому vi використовував ті самі клавіші у звичайному режимі, щоб відповідати макет клавіатури. Ось стаття з фотографією клавіатури: catonmat.net/blog/why-vim-uses-hjkl-as-arrow-keys
Алло

8
Все, що має репутацію у складності ... приваблює певну людину. Кроссфіт, Vim, функціональне програмування, веганізм тощо. Зараз, звичайно, не всі люди, які займаються однією з таких заходів, є подібними, але вони з’являються непропорційно часто. І частиною заманки для цієї людини є складність самої діяльності . Те, що опускає планку до входу, є для них анафемою: це робить їх менш особливими. Є причини віддати перевагу hjkl. Хороші. Але вони надуваються статусом догми, принаймні частково, тому що люди повинні відчувати, що вони кращі за інших.
Джаред Сміт

@Kylos Я погоджуюся, що hjklне найкращий коли-небудь у двораку. Але як користувач двораку, я можу їх трохи зручно знайти, оскільки вони поєднані між собою: як jkз одного боку дошки; а hl з іншого боку.
нілон

Відповіді:


66

Насправді це не погана практика.

Дуже багато людей (у тому числі доктор Vim, як показує відповідь @B Layer ) стверджують, що ви не повинні використовувати клавіші зі стрілками, оскільки це змушує ваші руки рухатися від домашнього ряду (другий рядок вашої клавіатури, де у вас є hjkl), і це робить вас менш ефективними .

Це (принаймні IMO) поганий результат від ритму кругообігу Vim "пуристів": нові користувачі сліпо слідують за цим, деякі навіть відключають клавіші зі стрілками, а потім скаржаться, що вони не такі ефективні, як раніше.

Єдине справжнє правило для використання vim - це використовувати його ефективно: якщо вам зручніше Leftі Rightніж, hі l будьте ним, використовуйте клавіші зі стрілками. У Vim навіть є set mouse=aможливість, якщо ви хочете використовувати мишу!

Після того, як ви звикнете до ВІМ і краще з різними доступними рухами ( f, t, ,, ;, w, b, e, ge, і в основному всі в :h quickref) ви могли б зрозуміти , що ви використовуєте НЕ клавіші зі стрілками , що багато. І якщо ви все-таки їх використовуєте, це не проблема, використовуйте те, що вам найбільш ефективно.

Зауважте, що аргумент не залишати домашній рядок для більшої ефективності, на мій погляд, не так добре: Якщо ви подивитесь на те, чому vim використовує hjkl, ви побачите, що ці ключі були вибрані, оскільки стрілки не було ключі, коли писалася Ві. Можна стверджувати, що, можливо, якщо б клавіатури в цей час були різними, ніхто не вважав би не використовувати клавіші зі стрілками гарною практикою.


13
Мені часто приходилося дуже сильно згинати зап'ястя, щоб дістатися до клавіш зі стрілками, тому що я так звик до них. Нарешті я відключив клавіші зі стрілками, щоб звикнути, щоб hjklпросто полегшити біль від зап'ястя.
Шахбаз

9
Я хотів би зазначити, що це має сенс лише на клавіатурах QWERTY. Для деяких макетів hjkl може бути справжнім болем.
coteyr

1
Можна скористатися обома параметрами: вибираючи hjkl або стрілки, ви можете прив’язати інший набір клавіш вгору / вниз, щоб рухатись на екранні лінії, а не рядки файлів. Це допомагає при редагуванні файлів довгими рядками.
користувач31389

1
Я не зрозумів, перш ніж прочитати вашу відповідь, що я навряд чи використовую hjkl і клавіші зі стрілками, тому що звик до вдосконалених команд руху, які ви згадуєте. Влучне зауваження!
Спірос

4
Тим НЕ менше я ціную ваші до мене очі правильного відповідь, я міг будь ласка уламати вас як побратим сповільнювач і VI шанувальника в спробі вашого важче знайти менш «пошарпані» альтернативні фразування в коло ривок , не викликає яскраво порушує зображення кільця хлопців чи чоловіків без брюк, всі мастурбують разом у компанії один одного‽ Досить, будь ласка? :)
tchrist

40

Я не знаю, чи справді це вже актуально, але я старожил, тож ось трохи історії.

У старі часи, VT100 терміналів були клавіші зі стрілками, але пресинг один передається послідовність евакуації , як <ESC>[Aдля вгору, <ESC>[Bдля вниз, і т.д.
Крім того , будучи послідовним терміналом прохідного зі швидкістю 9600 бода, це можливість користувача натискати на клавіші занадто швидко передати всю послідовність, яка б викликала одним натисканням клавіші перервати послідовність попереднього натискання клавіші і плутати vi.

Це може призвести до того, що vi незрозуміло перейде в режим вставки та вставить [B [B [B [B [B [B [B] у свій файл, якщо ви натиснули стрілку вниз. Я кажу це незрозуміло, тому що в цій послідовності немає нічого, що повинно входити в режим вставки, і той факт, що кожна послідовність починається з символу ESC, повинен був вийти з режиму вставки. Але все-таки вона вставила б сміття. Не завжди - просто тоді, коли ви поспішали.

Один швидко цього втомився і вирішив просто дотримуватися hjklключів.


8
З будь-якої причини, TCP-термінальні програми все ще використовують клавіші стрілок на основі втечі, і досі не існує надійного способу розмежування натискання клавіші "відхилення" від надсилання першого байту послідовності втечі клавіші зі стрілкою.
supercat

1
@supercat Вони роблять є надійний спосіб відрізнити їх. Це називається за допомогою SC81T . Проблема полягає в тому, що багато програм не домовляються про це, а деякі термінали, ймовірно, не підтримують це.
Jamessan

1
@jamessan: Якщо я прочитав це правильно, ви припускаєте, що надійним способом відрізнити втечу від клавіш зі стрілками є не використання клавіш зі стрілками, що базуються на втечі, що пов'язане з моїм коментарем "з будь-якої причини" про програми, які все ще використовують escape- на основі клавіш зі стрілками.
supercat

Гм, у мене є старий термінал IBM, який може імітувати VT100, можливо, доведеться спробувати це
вушну панель

3
Я, безумовно, можу підтвердити, що це було правдою, принаймні назад, коли під час 80-х нам доводилося ставити знаки в приміщенні терміналу метро, щоб з цієї причини не використовувати клавіші зі стрілкою in vi . Вони постійно псували свої файли, коли драйвер Tty кидав перерви.
tchrist

28

Хоча я погоджуюсь з @statox, що ніхто не повинен бути покараним, ухиляним, відлученим або відстороненим, якщо вони вирішать використовувати клавіші зі стрілками ... використовувати ваше програмне забезпечення, але як ви вважаєте за потрібне ... Я б не бачив, як значною мірою ставлення до лайсез-файру, якби я давав вказівки новому новому користувачеві. Я настійно рекомендую почати з дотримання найкращих практик. Вони є «найкращими практиками» чомусь ... їх добре застосували багато людей, які прийшли перед вами та мною.

Чорт забирай, навіть власна допомога Віма підштовхує тебе в цьому напрямку , хоча не без гіперболи (" сильно сповільнюйся") ...

Ви також можете перемістити курсор за допомогою клавіш зі стрілками. Якщо ви все ж таки зробите, ви значно сповільнюєте редагування, оскільки для натискання клавіш зі стрілками ви повинні перемістити руку від текстових клавіш до клавіш зі стрілками. Зважаючи на те, що ви можете це робити сотні разів на годину, це може зайняти значну кількість часу.

Існує також той факт, що будь-який вибір, який ви зробите на початку, може стати звичками, які важко порушити, якщо ви хочете змінитись у майбутньому. Тож усі інші рівні, чому б не прийняти рекомендовану звичку зараз, а не ризикувати, що використання клавіш зі стрілками є неефективним або вбивством за допомогою кистей?

Загалом, подумайте про те, щоб чесно поставитись до роботи без клавіш зі стрілками. Через розумну кількість часу, якщо ви просто не можете жити без вгору / вниз / вліво / вправо ... не робіть.

... це я б сказав новому користувачеві, який зацікавився моєю думкою. Не сприймайте це особисто, якщо ви не згодні (я з вами розмовляю, downvoter).


9
Навіть якщо ви погоджуєтесь, що це дійсно краще клавіш зі стрілками (я навіть не впевнений, що це так), це десь внизу списку всіх можливих «найкращих практик». Я б заперечував, що існує багато набагато важливіших речей, ніж використання hjkl.
Мартін Турной

5
@Carpetsmoker Я не думаю, що це потрібно для ранжирування кращих практик. Якщо у вас немає сильного бажання використовувати клавіші зі стрілками, чому б не зробити так, як рекомендує Vim? Особливо, якщо ви новачок у Vim ... ми всі знаємо, як важко змінити те, як ми щось робимо, як тільки це вкоренилося.
B Layer

1
"Ви значно сповільнюєте своє редагування" - це здається мені досить перебільшенням ... все ж я погоджуюся, що варто спробувати. Це, чесно кажучи, недостатньо важливо для війни.
Тінь

2
@BLayer немає не тут - це найбільш цивільне обговорення на тему, яку я думаю, я бачив. Але війни, безумовно, велися ...
Тінь

1
don't think it's necessary to rank best practicesЩо ж, мені здається, ми повинні зосередитись на речах, які дають нам найкращу цінність у житті, враховуючи, що ресурси обмежені та життя коротке. Я випадково знаю, що клавіші hjkl мають серце через неправильне дитинство, яке грає на шахрая, жайворонка, ангбанда тощо на ноутбуці без нумерації, але дехто провів своє дитинство краще, і доведеться "вивчати" клавіші зі стрілками незалежно. Я вважаю, що вивчення рухів, діапазонів тощо - набагато корисніший спосіб провести час.
Мартін Турнойж

16

Інші відповіді говорять про те, що втрата ефективності від переміщення рук із домашнього ряду не така вже й велика справа, і я здебільшого погоджуюся. Однак, що це велика угода , коли ви вивчаєте Vim, завжди використовуючи клавіші зі стрілками , щоб уникнути перемикання в нормальний режим роботи .

Іншими словами, використання синглу, де ви використовували б один h, не є великою втратою продуктивності, але використання місця, де ви могли б скористатися, EscI - це величезна втрата.

Ось чому люди говорять вам уникати клавіш зі стрілками, коли ви навчаєтеся vim, тому що це змушує вас навчитися нормальному режиму, а не виходити з режиму вставки. У звичайному режимі - це всі ваші підвищення ефективності.


1
+1. Іншими словами: "Не використовуйте клавіші зі стрілками і не використовуйте hjkl." (Збереження навмисної гіперболи.)
wchargin

3
На насправді, а НЕ в 10 разів ви могли б використовувати 1 0 або, ще простіше, Home. Останній працює навіть у Блокноті Windows.
Руслан

7

Є дві основні причини, через які люди кажуть, що не слід використовувати клавіші зі стрілками. Деякі стверджують, що hjkl є кращим, оскільки він тримає ваші руки в домашньому ряду, що не є помилковим , але також не має значення. Інші, включаючи мене, скажуть, що ви не повинні використовувати клавіші зі стрілками, якщо ви пересуваєте більше кількох символів, але ви також не повинні використовувати hjkl.

Важливо не те, які клавіші ви використовуєте, а скільки їх . Якщо ви хочете перейти до початку слова, ви не потрапите hhh; ти вдарив b. Кінець слова - eні llll. Початок лінії: 0, кінець рядка: $. І нічого іншого, /searchдля тексту, який існує там, де ви хочете піти. (або залежно від вдосконалених команд руху).

Але щоразу, коли ви виявляєте той самий ключ більше двох разів поспіль, є кращий спосіб це зробити.


7

Більш точним твердженням може бути "використання клавіш зі стрілками - це погана практика , намагаючись краще навчитися vim " . Люди, які не знаходяться у vim, звикли використовувати клавіші зі стрілками для переміщення, тому вони не навчаються hjkl, тим самим не отримуючи шанс побачити, чи бажано це.

Особисто, отримавши деяке загальне знайомство з vim, я на деякий час відключив клавіші зі стрілками , щоб отримати призупинення, hjklі пізніше відновив їх, щоб спростити свою .vimrc. У моєму випадку є загальноприйнятою мудрість; як тільки я знав, як користуватися hjklі клавішами зі стрілками, я опинився майже виключно за допомогою колишньої.


6
Я не погоджуюсь. Як каже цей блог , що підхід «все або нічого» для початківців допомагає викликати репутацію vim у «непривітній для користувачів». Нові користувачі починають, занурюються і перебиваються і (не дивно) роблять висновок, що vim - це нечесний безлад і повертатися до редактора, де вони можуть бути гідно продуктивними. - Якщо ви навчитесь плавати, ви не кидаєтеся з човна у відкритий океан. Цілком прийнятно проводити веслування собаками навколо бавовняного басейну, поки вам не стане комфортно з водою.
RM

2
... не кажучи, що відключення клавіш зі стрілками не працюватиме для людей. Але це крок "мені подобається vim та хочу навчитися його краще використовувати", а не крок "Я новачок у vim та хочу навчитися його використовувати".
RM

5

Звичайна відповідь передбачає ефективність. Ви, ймовірно, протягом багатьох років проходили навчання для використання сенсорного введення тексту, яке вимагає тримати свої руки у форматі asdf та jkl ;. Переважна більшість ключових зв'язків у Vi розроблена навколо цього факту, включаючи команди руху hjkl.

Особисто я фактично використовую і те, і інше. Я використовую hjkl, коли активно редагую великі розділи тексту, і клавіші зі стрілками при прокручуванні файлів журналу (і |, g та / коли я роблю точкові редагування у файлі). Це просто те, що для мене добре працює, і в такому випадку, це дійсно важливо.


2

Давно в багатьох терміналах не було клавіш зі стрілками, або не було всіх чотирьох. Програмні системи, які потребували навігації, зазвичай забезпечували певний підхід до навігації, не покладаючись на клавіші зі стрілками, і vi's hjkl є канонічним прикладом. (Іншим класичним прикладом є ^ E- ^ S- ^ X- ^ D.) WordStar. У міру того, як утиліта навігації по клавіатурі стає все очевиднішою, все нові й нові термінали починають надходити за допомогою клавіш зі стрілками, а програмні системи часто пов'язують їх зі старими способами навігація. Однак це викликало занепокоєння щодо переносимості: якщо діти, які навчаються в школах, повинні покластися на таку вигадливу новомодну функцію, як клавіші зі стрілками, мислення таке, можливо, вони не зможуть бути продуктивними на колись звичайному - клавіатури без клавіш зі стрілками.

Так, викладачі курсів базових обчислень почали обережно попереджати студентів навчитися використовувати найменший загальний знаменник, щоб максимально підвищити їх працездатність. І ця практика давно пережила будь-які причини, які, можливо, колись були.

У сучасних реалізаціях vi, основна причина віддавати перевагу hjkl полягає в тому, що використовувати клавіші, які вже знаходяться під рукою, трохи швидше, ніж переміщувати руку туди, куди кладуть стрілки. Мінусом уникнення контекстного перемикання вашої руки, звичайно, є те, що вам може знадобитися виконати контекстний перемикач vi. У наш час, коли люди дуже рідко кланяються за допомогою набору швидкості, чи ви робите те чи інше, це майже питання особистого уподобання, і більше нічого поганого у використанні клавіш зі стрілками, якщо вони взагалі були.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.