¿Por qué vim usa hjkl para las teclas del cursor?

56

¿Por qué usar las teclas hjklen la misma línea en lugar de las teclas en un triángulo como wasdpara moverse en videojuegos?

¿Por qué no algo equivalente con la mano derecha, como ijklo pl;'?

albttx
fuente
3
Compruebe que la página de vi de Wikipedia contiene una imagen de un antiguo teclado de máquina Unix que explica algunas combinaciones de teclas.
Christian Brabandt
3
Porque vimestá exento de mantenerse al día con los avances tecnológicos: 3
Alexander
3
Puede colocar cuatro dedos de una mano sobre las teclas hjkl, cómodamente , y mover el cursor en las cuatro direcciones sin mover los dedos hacia adelante y hacia atrás. Si realmente lo piensa, cuatro en una fila es el único diseño de tecla de cursor consistente con la anatomía humana. La pregunta es realmente cómo todos los demás logran equivocarse.
44
En realidad, no se recomienda poner su índice en el hsino en el j(es por eso que tiene un "pezón" en la jtecla). La razón de esto es que usará bmucho más que hy tener ;acceso es útil en una gran cantidad de lenguaje de programación (y con un cambio, lo tiene :cada vez más útil en Vim).
nobe4
2
Por cierto, este tema está cubierto en la segunda pregunta más votada en Unix SE
Dmitry Grigoryev

Respuestas:

75

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

Cuando Bill Joy creó el editor de texto vi, utilizó el terminal ADM-3A, que tenía las flechas en las teclas hjkl. ¡Naturalmente, reutilizó las mismas llaves y el resto es historia!

ingrese la descripción de la imagen aquí

nobe4
fuente
27
¡Esto todavía debería estar en cada teclado! :)
albttx
16
Ahora me pregunto qué tipo de terminal tenía el tipo que hizo emacs ...
leeand00
11
@ leeand00: Un teclado Symbolic LISP Machine Space Cadet . El artículo habla explícitamente sobre cómo el diseño del teclado influyó en el diseño de Emacs, y también lo compara con el diseño de Vi con su omnipresente tecla Escape, y el hecho de que el Escape estaba muy convenientemente ubicado en el teclado del Terminal ADM-3A . Bueno, en el Teclado Space Cadet, están las teclas Control, Meta, Super e Hiper que están ubicadas muy convenientemente, así como no menos de 3 teclas Shift diferentes que permiten escribir más de 8000 caracteres.
Jörg W Mittag el
11
Si bien esta respuesta es correcta como tal, mueve la pregunta en lugar de responderla: "¿Por qué eligió el teclado ADM-3A hjkly no una forma más lógica como ijkl?"
Martin Tournoij
2
@Carpetsmoker: no inventamos la lógica de ubicación de la flecha del teclado hasta finales de los 80 upload.wikimedia.org/wikipedia/commons/3/30/…
Jacob Krall
21

La respuesta de Nobe4 es excelente y explica por qué la usamos hjklmuy bien. Sin embargo, es realmente interesante ver el teclado completo, y muchas cosas extrañas sobre vim tienen más sentido cuando puedes ver el teclado completo en el que fue diseñado. Por ejemplo, ¿por qué vi depende tanto de la esctecla cuando está en un lugar tan extraño e incómodo? Esta es la razón por:

ingrese la descripción de la imagen aquí

Como puede ver, esces donde está la pestaña en la mayoría de los teclados. ctrles otra tecla que es un poco difícil de alcanzar, pero en una ubicación muy cómoda en este teclado (donde generalmente está el bloqueo de mayúsculas).

DJMcMayhem
fuente
¿Tenía viun <Leader>mapeo? Pensé que era un invento posterior ...
Martin Tournoij
@Carpetsmoker Creo que sí, pero en realidad no estoy seguro. Vim :help <leader>no tiene el {not in Vi}texto de la firma , y dice que vi tenía :map(aunque no :noremap), así que estoy bastante seguro de que vi tenía líder. Incluso si no lo hiciera, me imagino la historia del teclado vi que al menos un tanto influir en el diseño de vim.
DJMcMayhem
También es difícil encontrar información en vi a través de google, ya que la mayoría de los resultados terminan siendo sobre vim.
DJMcMayhem
@DJMcMayhem pubs.opengroup.org/onlinepubs/009696699/utilities/vi.html y roguelife.org/~fujita/COOKIES/HISTORY/1BSD/exrefm.pdf son buenas referencias para vi (POSIX e histórico, respectivamente). También puede descargar nvi, elvis, vile o ex-vi (ex-vi es un descendiente del vi histórico) y ver lo que hacen o su documentación. No hay ninguna <leader>característica en vi.
Random832
Además, Vim se desarrolló originalmente para el Amiga (barra invertida en su posición habitual [ISO o Large Enter]), y basado en Stevie, que era para el Atari ST (barra invertida en la esquina inferior derecha, después de ingresar, pero aparentemente no lo hizo) soporte :mapen absoluto)
Random832
17

En cuanto a por qué estas flechas se imprimieron en estas teclas ... es porque podrían usarse con la tecla de control para el movimiento del cursor local. Ctrl-H y Ctrl-J (retroceso y avance de línea) son obvios, y una mnemónica fácil incluso hoy en día. Ctrl-K es "pestaña vertical", pero a veces se usaba para salto de línea inverso en terminales pre ANSI. El uso de Ctrl-L para un cursor no destructivo hacia adelante probablemente se eligió en función de la ubicación del teclado.

También puede haber notado en la imagen del teclado en la otra respuesta que "INICIO" está en la tecla ^/ ~. Por supuesto, Ctrl- ^ aloja el cursor (se envía a la parte superior izquierda de la pantalla, o abajo a la izquierda, según el modo).

Estas asignaciones de control también se utilizaron para terminales Wyse, el protocolo Kermit, y se admitieron en algunas versiones de PC ANSI.SYS.

Fuentes:

Aleatorio832
fuente
^ H, ^ K: muy esclarecedor, ya que hoy recordaré fácilmente que ^ J se mueve hacia abajo. Nunca pude recordar la asignación de arriba a abajo de manera confiable.
miroxlav