Perché vim usa hjkl per i tasti cursore?


56

Perché usare i tasti hjklsulla stessa riga anziché i tasti in un triangolo come wasdper passare ai videogiochi?

Perché non qualcosa di equivalente con la mano destra, come ijklo pl;'?


3
Controlla quella pagina Wikipedia di vi , contiene un'immagine di qualche antica tastiera della macchina Unix che spiega, alcune combinazioni di tasti.
— Christian Brabandt,

3
Perché vimè esente dal tenere il passo con i progressi tecnologici: 3
— Alexander

3
È possibile posizionare comodamente quattro dita di una mano sui tasti hjkl e spostare il cursore in tutte e quattro le direzioni senza spostare le dita avanti e indietro. Se ci pensate davvero, quattro di fila è l'unico layout dei tasti cursore coerente con l'anatomia umana. La domanda è davvero come tutti gli altri riescono a sbagliare.

4
In realtà non è consigliabile mettere il tuo indice sul hma piuttosto sul j(ecco perché hai un "capezzolo" sulla jchiave). Il motivo è che userete bmolto più di he avere ;accesso è utile in molti linguaggi di programmazione (e con un turno, avete quello :che è sempre più utile in Vim).
— nobe4,

2
A proposito, questo argomento è trattato nella seconda domanda più votata su Unix SE
— Dmitry Grigoryev,

Risposte:


75

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

Quando Bill Joy ha creato l'editor di testo vi, ha usato il terminale ADM-3A, che aveva le frecce sui tasti hjkl. Naturalmente ha riutilizzato le stesse chiavi e il resto è storia!

inserisci qui la descrizione dell'immagine


27
Questo dovrebbe essere ancora su ogni tastiera! :)
— albttx,

16
Ora mi stai chiedendo che tipo di terminale aveva il ragazzo che ha creato emacs ...
— leeand00

11
@ leeand00: una tastiera cadetto per spazio macchina Symbolics LISP . L'articolo parla esplicitamente di come il design della tastiera ha influenzato il design di Emacs e lo confronta anche con il design di Vi con il suo onnipresente tasto Escape e il fatto che Escape si trovasse in una posizione molto comoda sulla tastiera del terminale ADM-3A . Bene, sulla tastiera Space Cadet, ci sono i tasti Control, Meta, Super e Hyper che si trovano in una posizione molto comoda, così come non meno di 3 diversi tasti Maiusc che consentono di digitare oltre 8000 caratteri.
— Jörg W Mittag,

11
Mentre questa risposta è corretta in quanto tale, in qualche modo sposta la domanda piuttosto che rispondere: "Perché la tastiera ADM-3A ha scelto hjkle non una forma più logica come ijkl?"
— Martin Tournoij,

2
@Carpetsmoker: non abbiamo inventato la logica della posizione della freccia della tastiera fino alla fine degli anni '80 upload.wikimedia.org/wikipedia/commons/3/30/…
— Jacob Krall

21

La risposta di Nobe4 è ottima e spiega perché usiamo hjklmolto bene. Tuttavia, è davvero interessante vedere la tastiera completa e molte cose strane su Vim hanno più senso quando puoi vedere la tastiera completa su cui è stata progettata. Ad esempio, perché vi fa così tanto affidamento sulla escchiave, quando si trova in un posto così strano e scomodo? Ecco perché:

inserisci qui la descrizione dell'immagine

Come puoi vedere, escè dove si trova la scheda sulla maggior parte delle tastiere. ctrlè un altro tasto che è leggermente imbarazzante da raggiungere, ma in una posizione molto comoda su questa tastiera (dove solitamente si trova il blocco maiuscole).


Aveva viuna <Leader>mappatura? Pensavo che fosse un'invenzione successiva ...
— Martin Tournoij,

@Carpetsmoker Penso di sì, ma in realtà non ne sono sicuro. Vim's :help <leader>non ha il {not in Vi}testo della firma e dice che vi era :map(anche se non :noremap), quindi sono abbastanza sicuro che vi avesse un leader. Anche se non lo fosse, immagino che la storia della tastiera vi influenzerebbe almeno in qualche modo il design di Vim.
— DJMcMayhem

È anche difficile trovare informazioni su vi tramite google, poiché la maggior parte dei risultati finisce con vim.
— DJMcMayhem

@DJMcMayhem pubs.opengroup.org/onlinepubs/009696699/utilities/vi.html e roguelife.org/~fujita/COOKIES/HISTORY/1BSD/exrefm.pdf sono buoni riferimenti per vi (POSIX e storico, rispettivamente). Puoi anche scaricare nvi, elvis, vile o ex-vi (ex-vi è un discendente della vi storica) e vedere cosa fanno o la loro documentazione. Non c'è <leader>funzione in vi.
— Casuale 832

Inoltre, Vim è stato originariamente sviluppato per l'Amiga (barra rovesciata nella sua solita posizione [ISO o Grande invio]), e basato su Stevie che era per l'Atari ST (barra rovesciata nell'angolo in basso a destra, passato invio, ma a quanto pare non ha funzionato supporto :mapa tutti)
— Random832

17

Sul motivo per cui queste frecce sono state stampate su questi tasti ... è perché potrebbero essere utilizzate con il tasto di controllo per il movimento del cursore locale. Ctrl-H e Ctrl-J (backspace e avanzamento riga) sono evidenti e un facile mnemonico anche oggi. Ctrl-K è "scheda verticale", ma a volte veniva utilizzato per l'alimentazione di linea inversa sui terminali pre-ANSI. L'uso di Ctrl-L per un cursore non distruttivo in avanti è stato probabilmente scelto in base alla sua posizione sulla tastiera.

Potresti anche aver notato nell'immagine della tastiera nell'altra risposta che "HOME" è sul tasto ^/ ~. Ovviamente, Ctrl- ^ ospita il cursore (invia in alto a sinistra dello schermo, o in basso a sinistra, a seconda della modalità).

Queste mappature di controllo sono state utilizzate anche per i terminali Wyse, il protocollo Kermit, e sono state supportate in alcune versioni di PC ANSI.SYS.

fonti:


^ H, ^ K - molto illuminante, poiché oggi ricorderò facilmente che ^ J si sposta verso il basso. Non sono mai stato in grado di ricordare l'affidamento di su-giù in modo affidabile.
— miroxlav,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.