Dlaczego używanie klawiszy strzałek w trybie normalnym jest uważane za złą praktykę?

43

Przeczytałem go w wielu artykułach ( np. ), Że używanie klawiszy strzałek w trybie normalnym jest złą praktyką. Czy ktoś mógłby wyjaśnić, dlaczego uważa to za niewłaściwą praktykę?

Ankit Jain
źródło
5
Jednym z dobrych powodów, aby nie używać hjkl, jest użycie innego układu klawiatury. Na przykład hjkl nie są skorelowane przestrzennie w Dvorak i dlatego są trudne w użyciu.
Kylos
1
@Kylos używam hjklw Dvorak. Jest to zdecydowanie mniej rozsądne niż w przypadku qwerty, ale nie wiem, czy nazwałbym to „trudnym w użyciu”; to tylko klucze i nie jest tak, że trudno jest do nich dotrzeć lub cokolwiek, gdy się do tego przyzwyczaisz.
Dougal
2
Istnieje wiele mitów, dlaczego hjklpowinna być najlepsza opcja poruszania się w dokumencie. Prawda jest taka, że ​​niektóre klawiatury miały włączone klawisze strzałek hjklw czasie tworzenia vi, więc vi używała tych samych klawiszy w trybie normalnym, aby dopasować układ klawiatury. Oto artykuł ze zdjęciem klawiatury: catonmat.net/blog/why-vim-uses-hjkl-as-arrow-keys
allo
8
Wszystko, co ma reputację trudności ... przyciąga pewną osobę. Crossfit, Vim, programowanie funkcjonalne, weganizm itp. Z pewnością nie wszyscy ludzie, którzy podejmują takie działania, są tego rodzaju, ale pojawiają się nieproporcjonalnie często. Jedną z zalet tego człowieka jest trudność samego działania . Rzeczy, które obniżają poprzeczkę do wejścia, są dla nich przekleństwem: czyni je mniej wyjątkowymi. Są powody, by preferować hjkl. Dobre. Ale stają się zawyżone do rangi dogmatów, przynajmniej częściowo, ponieważ ludzie muszą czuć się lepsi od innych.
Jared Smith
@Kylos Zgadzam się, że hjklnie są najlepsze w dvorak. Ale jako użytkownik dvoraka mogę znaleźć je trochę przydatne, ponieważ są sparowane razem: jak jkna jednej stronie planszy; i hl po drugiej stronie.
nilon

Odpowiedzi:

66

W rzeczywistości nie jest to zła praktyka.

Wiele osób (w tym dokument Vima, jak pokazuje odpowiedź @B Layer ) argumentuje, że nie należy używać klawiszy strzałek, ponieważ powoduje to, że dłonie przesuwają się z głównego rzędu (druga linia klawiatury, gdzie masz hjkl), a to czyni cię mniej wydajnym .

Jest to (przynajmniej IMO) zły wynik szarpnięcia kół vim „purystów”: nowi użytkownicy śledzą to ślepo, niektórzy nawet wyłączają klawisze strzałek, a następnie narzekają, że nie są tak wydajni jak wcześniej.

Jedyna prawdziwa reguła do użytku vim jest efektywnie z niego korzystać: jeśli czujesz się bardziej komfortowo przy użyciu Lefti Rightnie hi l czy to za pomocą klawiszy strzałek. Vim ma nawet set mouse=aopcję, jeśli chcesz użyć myszy!

Po przyzwyczaić do Vima i lepiej z różnych dostępnych ruchów ( f, t, ,, ;, w, b, e, ge, a przede wszystkim w :h quickref), które może uświadomić sobie, że nie używaj strzałek, że dużo. A jeśli nadal z nich korzystasz, to nie jest problem, użyj tego, na czym jesteś najbardziej wydajny.

Zauważ, że argument, by nie opuszczać rzędu głównego dla większej wydajności, nie jest moim zdaniem zbyt dobry: jeśli spojrzysz na Dlaczego vim używa hjkl , zobaczysz, że te klucze zostały wybrane, ponieważ nie było żadnej strzałki klucze, kiedy napisano Vi. Można argumentować, że być może, gdyby klawiatury były inne w tym czasie, nikt nie pomyślałby o niestosowaniu klawiszy strzałek.

statox
źródło
13
Często bardzo źle pochylałem nadgarstek, aby dosięgnąć klawiszy strzałek, ponieważ byłem do nich przyzwyczajony. Skończyło się na wyłączeniu klawiszy strzałek, aby przyzwyczaić się hjkldo odciążenia bólu nadgarstka.
Shahbaz
9
Chciałbym zauważyć, że ma to sens tylko w przypadku klawiatur QWERTY. W przypadku niektórych układów hjkl może być prawdziwym bólem.
coteyr
1
Możesz skorzystać z obu opcji: niezależnie od tego, czy wybierzesz hjkl, czy strzałki, możesz powiązać inny zestaw klawiszy góra / dół, aby poruszać się po liniach na ekranie, a nie liniach plików. Pomaga podczas edycji plików z długimi liniami.
user31389
1
Nie przeczytałem przed przeczytaniem twojej odpowiedzi, że prawie nie używam hjkl i klawiszy strzałek, ponieważ przyzwyczaiłem się do zaawansowanych poleceń ruchu, o których wspomniałeś. Słuszna uwaga!
Spiros
4
Niezależnie od tego, jak bardzo doceniam waszą prawidłową odpowiedź na moje oko, czy mogę prosić o pomoc jako moderator i vi miłośnik starania się jak najtrudniej znaleźć jakieś mniej „obskurne” alternatywne sformułowanie, aby szarpać kółko, które nie wywołuje jaskrawo niepokojącego obrazu pierścienia chłopców lub mężczyzn bez spodni, którzy masturbują się razem w swoim towarzystwie‽ Całkiem proszę? :)
tchrist
40

Nie wiem, czy to jest naprawdę istotne, ale jestem starodawny, więc oto trochę historii.

W dawnych czasach terminale VT100 posiadały klawisze strzałek, ale naciśnięcie jednego z nich przekazywało sekwencję ucieczki, np. W <ESC>[Agórę, <ESC>[Bw dół itp.
Ponadto, będąc terminalem szeregowym komunikującym się z prędkością 9600 bodów, użytkownik mógł zbyt szybko naciskać klawisze aby przekazać całą sekwencję, która spowodowałaby, że jedno naciśnięcie klawisza przerwałoby sekwencję poprzedniego naciśnięcia klawisza i myliło vi.

Spowodowałoby to, że vi niewytłumaczalnie przejdzie w tryb wstawiania i wstawia [B [B [B [B [B [B [B] do pliku), jeśli przytrzymasz strzałkę w dół. Mówię w niewytłumaczalny sposób, ponieważ nie ma nic w tej sekwencji, która powinna wejść w tryb wstawiania, a fakt, że każda sekwencja zaczyna się znakiem ESC, powinien wyjść z trybu wstawiania. Ale nadal wstawiałby śmieci. Nie zawsze - tylko wtedy, gdy się spieszysz.

Jeden szybko się tym zmęczył i postanowił po prostu trzymać się hjklkluczy.

dwilliss
źródło
8
Z jakiegokolwiek powodu programy terminalowe TCP nadal używają klawiszy strzałek opartych na klawiszach Escape i nadal nie mają w 100% wiarygodnego sposobu na odróżnienie naciśnięcia klawisza Escape od wysłania pierwszego bajtu sekwencji klawiszy klawiszy.
supercat
1
@supercat one zrobić mieć niezawodny sposób na odróżnienie tych. Nazywa się to za pomocą SC81T . Problem polega na tym, że wiele programów tego nie negocjuje, a niektóre terminale prawdopodobnie nie obsługują tego.
jamessan
1
@jamessan: Jeśli dobrze to przeczytałem, sugerujesz, że niezawodnym sposobem odróżnienia klawisza Escape od klawiszy strzałek jest nie używanie klawiszy strzałek opartych na klawiszach Escape, co wiąże się z moim komentarzem „z jakiegokolwiek powodu” na temat programów, które nadal używają klawisza Escape- oparte na strzałkach klawisze.
supercat
Hmm, mam stary terminal IBM, który może emulować VT100, być może będę musiał to wypróbować
skorek
3
Mogę z pewnością potwierdzić, że była to prawda, przynajmniej dawno temu, ponieważ w latach 80. musieliśmy umieścić znaki w pokoju terminalu undergrad, aby nie używać klawiszy strzałek w vi z tego właśnie powodu. Ciągle psowali swoje pliki, gdy sterownik tty upuścił przerwanie.
tchrist
28

Chociaż zgadzam się z @statox, że nikt nie powinien być karany, odrzucany, ekskomunikowany lub smołowany i upierzony, jeśli zdecyduje się użyć klawiszy strzałek ... użyj oprogramowania, które uważasz za stosowne ... dużo bardziej laissez-faire, gdybym udzielał wskazówek nowemu użytkownikowi z otwartym umysłem. Zdecydowanie polecam, aby zaczęły od stosowania najlepszych praktyk. Są „najlepszymi praktykami” z jakiegoś powodu… zostały z powodzeniem zastosowane przez wiele osób, które przyszły przede mną i mną.

Do licha, nawet pomoc Vima popycha cię w tym kierunku , choć nie bez hiperboli („ bardzo spowalnia”) ...

Możesz także przesunąć kursor za pomocą klawiszy strzałek. Jeśli jednak to zrobisz, znacznie spowolnisz edycję, ponieważ aby nacisnąć klawisze strzałek, musisz przenieść dłoń z klawiszy tekstowych na klawisze strzałek. Biorąc pod uwagę, że robisz to setki razy na godzinę, może to zająć sporo czasu.

Istnieje również fakt, że wszelkie wybory dokonane na początku mogą stać się nawykami, które trudno przełamać, jeśli chcesz zmienić w przyszłości. Więc wszystko inne jest równe, dlaczego nie przyjąć teraz zalecanego nawyku, zamiast ryzykować, że używanie klawiszy strzałek jest nieefektywne lub zabija nadgarstki?

Podsumowując, rozważ uczciwy wysiłek, aby robić rzeczy bez klawiszy strzałek. Po rozsądnym czasie, jeśli nie możesz żyć bez góry / dół / lewo / prawo ... nie.

... powiedziałbym nowemu użytkownikowi, który był zainteresowany moją opinią. Nie bierz tego osobiście, jeśli się nie zgadzasz (mówię do ciebie, downvoter).

Warstwa B.
źródło
9
Nawet jeśli zaakceptujesz, że jest to rzeczywiście lepsze niż klawisze strzałek (nawet nie jestem przekonany, że tak jest), to jest gdzieś na dole listy wszystkich możliwych „najlepszych praktyk”. Twierdziłbym, że istnieje wiele wiele ważniejszych rzeczy niż używanie hjkl.
Martin Tournoij
5
@Carpetsmoker Nie sądzę, że konieczne jest uszeregowanie najlepszych praktyk. Chyba że masz silną ochotę używać klawiszy strzałek, dlaczego nie zrobić tak, jak zaleca Vim? Szczególnie jeśli jesteś nowy w Vimie ... wszyscy wiemy, jak trudno jest zmienić sposób, w jaki coś robimy, gdy jest już zakorzeniony.
B Warstwa
1
„znacznie spowalniasz edytowanie” - wydaje mi się to dość przesadą ... niemniej zgadzam się, że warto spróbować. To po prostu szczerze mówiąc, nie jest wystarczająco ważne, by walczyć.
Shadow
2
@ BLayer no not here - jest to najbardziej obywatelska dyskusja na temat, jaki chyba widziałem. Ale wojny z pewnością toczyły się ...
Shadow
1
don't think it's necessary to rank best practicesWydaje mi się, że powinniśmy skupić się na rzeczach, które dają nam najlepszą wartość w życiu, biorąc pod uwagę, że zasoby są ograniczone, a życie krótkie. Zdarza mi się wiedzieć, że klawisze hjkl są sercem z powodu źle spędzonego dzieciństwa, grając w nieuczciwych, larn, angband itp. Na laptopie bez klawiatury numerycznej, ale niektórzy ludzie spędzili swoje dzieciństwo lepiej i mimo to będą musieli „oduczać” klawisze strzałek. Myślę, że uczenie się ruchów, zakresów itp. Jest znacznie bardziej użytecznym sposobem spędzania czasu.
Martin Tournoij
16

Inne odpowiedzi mówiły, że utrata wydajności w wyniku przenoszenia rąk z domowego rzędu nie jest aż tak wielka, i w większości się z tym zgadzam. Jednak to, co jest wielka sprawa jest kiedy uczysz się vim, zawsze za pomocą klawiszy strzałek, aby uniknąć przełączania z powrotem do trybu normalnego.

Innymi słowy, użycie jednego, w którym użyłbyś jednego, hnie jest ogromną stratą wydajności, ale użycie tam, gdzie mógłbyś użyć, EscI jest ogromną stratą.

Dlatego ludzie mówią ci, aby unikać klawiszy strzałek podczas nauki vima, ponieważ zmusza cię to do nauki trybu normalnego zamiast nigdy wychodzenia z trybu wstawiania. Tryb normalny to miejsce, w którym znajdują się wszystkie przyrosty wydajności.

Karl Bielefeldt
źródło
1
+1. Innymi słowy: „Nie używaj klawiszy strzałek i nie używaj hjkl”. (Zachowanie celowej hiperboli.)
wchargin
3
W rzeczywistości zamiast 10 razy mógłbyś użyć 1 0 lub nawet prościej Home. Ten ostatni działa nawet w Notatniku Windows.
Ruslan
7

Są dwa główne powody, dla których ludzie mówią, że nie powinieneś używać klawiszy strzałek. Niektórzy twierdzą, że hjkl jest preferowany, ponieważ trzyma ręce w głównym rzędzie, co nie jest fałszywe , ale także nie ma znaczenia. Inni, w tym ja, powiedzieliby, że nie powinieneś używać klawiszy strzałek, jeśli przenosisz więcej niż kilka znaków, ale nie powinieneś także używać hjkl.

Ważną rzeczą nie jest to, jakich kluczy używasz, ale raczej ile . Jeśli chcesz przejść do początku słowa, nie uderzasz hhh; uderzyłeś b. Koniec słowa to enie llll. Początek linii: 0, koniec linii: $. I cokolwiek więcej, /searchdla tekstu, który istnieje tam, gdzie chcesz iść. (lub dowolne z zaawansowanych poleceń ruchu, które wolisz).

Ale za każdym razem, gdy piszesz ten sam klawisz więcej niż dwa razy z rzędu, istnieje lepszy sposób, aby to zrobić.

Promień
źródło
7

Bardziej precyzyjne stwierdzenie może brzmieć: „używanie klawiszy strzałek to zła praktyka podczas próby lepszego nauczenia się vima . Osoby nowe w vimie są przyzwyczajone do poruszania się za pomocą klawiszy strzałek, więc nie uczą się hjkl, a tym samym nie mają szansy zobaczyć, czy jest to lepsze.

Osobiście, po zapoznaniu się z vimem, na pewien czas wyłączyłem klawisze strzałek , aby się zawiesić hjkli włączyłem je później, aby uprościć mój .vimrc. W moim przypadku tradycyjna mądrość; kiedy już wiedziałem, jak korzystać z obu hjklklawiszy strzałek, niemal całkowicie używałem tych pierwszych.

Patrick Sanan
źródło
6
Nie zgadzam się. Jak mówi ten blog , podejście „wszystko albo nic” dla początkujących pomaga wywołać reputację vim przez „nieprzyjaznych użytkowników”. Nowi użytkownicy zaczynają się, grzęzną i przytłaczają i (co nie jest zaskakujące) doszli do wniosku, że vim jest bezbożnym bałaganem i wróć do edytora, w którym mogą być przyzwoicie produktywni. - Jeśli uczysz się pływać, nie zrzucaj się z łodzi na otwarty ocean. Dopuszczalne jest wiosłowanie z psem wokół basenu dla dzieci, dopóki nie poczujesz się komfortowo z wodą.
RM
2
... nie mówiąc, że wyłączenie klawiszy strzałek nie będzie działać dla ludzi. Ale jest to krok „Lubię Vima i chcę nauczyć się go lepiej używać”, a nie „Jestem nowy w Vimie i chcę nauczyć się go używać”.
RM
5

Zwykła odpowiedź wymaga wydajności. Prawdopodobnie przez lata byłeś szkolony w zakresie posługiwania się pisaniem za pomocą dotyku, co wymaga trzymania rąk na asdf i jkl ;. Zdecydowana większość kluczowych powiązań w Vi została zaprojektowana wokół tego faktu, w tym polecenia ruchu hjkl.

Osobiście korzystam z obu. Używam hjkl, gdy aktywnie edytuję duże sekcje tekstu, a klawiszy strzałek, gdy przewijam pliki dziennika (i |, g, i / kiedy wykonuję edycję punktową w całym pliku). Tak się po prostu sprawdza, a w takim przypadku tak naprawdę to się liczy.

Austin Hemmelgarn
źródło
2

Dawno temu wiele terminali nie miało klawiszy strzałek lub nie posiadało wszystkich czterech z nich. Systemy oprogramowania, które wymagały nawigacji, zwykle zapewniały pewne podejście nawigacyjne bez polegania na klawiszach strzałek, a hjkl vi jest kanonicznym przykładem. (Innym klasycznym przykładem jest WordStar ^ E- ^ S- ^ X- ^ D.) Ponieważ narzędzie do nawigacji na klawiaturze stawało się coraz bardziej oczywiste, coraz więcej nowych terminali zaczęło pojawiać się ze strzałkami, a systemy oprogramowania często mapowały je na stare sposoby nawigacja. To jednak rodziło pewne obawy związane z przenośnością: jeśli dzieci szkolone w szkołach miałyby polegać na tak wymyślnej, wymyślnej funkcji, jak klawisze strzałek, myśleli się, że mogą nie być w stanie produktywnie - raz powszechne - klawiatury bez klawiszy strzałek.

Tak więc nauczyciele kursów podstaw komputerowych zaczęli ostrożnie ostrzegać uczniów, aby nauczyli się używać najniższego wspólnego mianownika, aby zmaksymalizować ich szanse na zatrudnienie. I ta praktyka dawno przeżyła wszelkie powody, które kiedyś miała.

We współczesnych implementacjach vi głównym powodem preferowania hjkl jest to, że używanie klawiszy znajdujących się pod ręką jest nieco szybsze niż przenoszenie ręki w dowolne miejsce, w którym znajdują się klawisze strzałek. Minusem unikania zmiany kontekstu ręki jest oczywiście to, że może być konieczne wykonanie zmiany kontekstu vi. W dzisiejszych czasach, kiedy ludzie bardzo rzadko cenią sobie szybkość pisania, to, czy robisz jedno, czy drugie, jest raczej kwestią osobistych preferencji i nie ma nic złego w używaniu klawiszy strzałek, jeśli kiedykolwiek tak było.

kopać
źródło