¿Por qué usar las teclas de flecha en modo normal se considera una mala práctica?


43

Lo he leído en muchos artículos ( por ejemplo ) que es una mala práctica usar las teclas de flecha en modo normal. ¿Podría alguien explicar por qué se considera una práctica incorrecta, en todo caso?


55
Una buena razón para no usar hjkl es si usa otra distribución de teclado. Por ejemplo, hjkl no están correlacionados espacialmente en Dvorak y, por lo tanto, son difíciles de usar.
Kylos

1
@ Kylos utilizo hjklen Dvorak. Definitivamente es menos sensato que en qwerty, pero no sé si lo llamaría "difícil de usar"; son solo llaves, y no es difícil alcanzarlas ni nada una vez que estás acostumbrado.
Dougal

2
Existen muchos mitos sobre por qué hjkldebería ser la mejor opción para moverse en un documento. La verdad es que algunos teclados tenían las teclas de flecha hjklen el momento en que vi fue creado, por lo que vi usó las mismas teclas en modo normal para que coincida con la distribución del teclado. Aquí hay un artículo con una foto del teclado: catonmat.net/blog/why-vim-uses-hjkl-as-arrow-keys
allo

8
Cualquier cosa con reputación de dificultad ... atrae a cierto tipo de persona. Crossfit, Vim, programación funcional, veganismo, etc. Ahora, ciertamente, no todas las personas que realizan una de esas actividades son de ese tipo, pero aparecen desproporcionadamente a menudo. Y parte del atractivo para esa persona es la dificultad de la actividad misma . Las cosas que bajan la barra de entrada son anatema para ellos: los hace menos especiales. Hay razones para preferir hjkl. Buenos. Pero se inflan al estado de dogma, al menos en parte, porque las personas tienen que sentir que son mejores que otras.
Jared Smith

@ Kylos Estoy de acuerdo en que hjklno son los mejores en dvorak. Pero como usuario de dvorak, puedo encontrarlos un poco útiles ya que están emparejados juntos: como en jkun lado del tablero; y hl del otro lado
nilon

Respuestas:


66

En realidad, esta no es una mala práctica.

Mucha gente ( incluido el documento de Vim como muestra la respuesta de @B Layer ) argumenta que no debe usar las teclas de flecha porque hace que sus manos se muevan desde la fila de inicio (la segunda línea de su teclado donde está hjkl) y eso lo hace menos eficiente .

Este es (al menos en mi opinión) un mal resultado de vim "purists" circle jerk: los nuevos usuarios siguen esto ciegamente, algunos incluso deshabilitan las teclas de flecha y luego se quejan de que no son tan eficientes como antes.

La única regla real para el uso vim es utilizarlo de manera eficiente: si se siente más cómodo usando Lefty Rightque hy l sea, utilizar las teclas de flecha. ¡Vim incluso tiene la set mouse=aopción si quieres usar un mouse!

Una vez que se acostumbre a VIM y obtener mejor con los diferentes movimientos disponibles ( f, t, ,, ;, w, b, e, ge, y, básicamente, todo en :h quickref) que podría darse cuenta de que usted no usar teclas de dirección tanto. Y si todavía los usa, no es un problema, use lo que sea más eficiente.

Tenga en cuenta que el argumento de no abandonar la fila de inicio para una mayor eficiencia no es tan bueno en mi opinión: si echa un vistazo a por qué vim usa hjkl , verá que estas teclas se eligieron porque no había ninguna flecha llaves cuando Vi fue escrito. Se podría argumentar que tal vez si los teclados fueran diferentes en este momento, nadie consideraría no usar las teclas de flecha como una buena práctica.


13
A menudo me encontraba doblando mucho la muñeca para alcanzar las teclas de flecha porque estaba muy acostumbrada a ellas. Terminé desactivando las teclas de flecha para acostumbrarme hjkla aliviar un poco el dolor de mi muñeca.
Shahbaz

99
Me gustaría señalar que esto solo tiene sentido en los teclados QWERTY. Para algunos diseños, hjkl puede ser un verdadero dolor.
coteyr

1
Puede utilizar ambas opciones: ya sea que elija hjkl o flechas, puede vincular el otro conjunto de teclas arriba / abajo para moverse por las líneas en pantalla y no por las líneas de archivo. Ayuda al editar archivos con líneas largas.
user31389

1
Antes de leer su respuesta, no me había dado cuenta de que apenas uso hjkl y las teclas de flecha porque me acostumbré a los comandos de movimiento avanzados que menciona. ¡Buen punto!
Spiros

44
Por mucho que aprecie su respuesta correcta a la vista, ¿podría convencerlo como compañero moderador y aficionado vi para que haga todo lo posible para encontrar alguna frase alternativa menos "cutre" para imbécil circular que no evoque la imagen vívidamente inquietante de un anillo sin pantalones de niños u hombres todos masturbándose juntos en compañía del otro ... ¿ Bastante por favor? :)
tchrist

40

No sé si esto es realmente relevante, pero soy un veterano, así que aquí hay un poco de historia.

En los viejos tiempos, los terminales VT100 tenían teclas de flecha, pero presionar uno transmitía una secuencia de escape como <ESC>[Ahacia arriba, <ESC>[Bhacia abajo, etc.
Además, al ser un terminal en serie que se comunicaba a 9600 baudios, era posible que el usuario presionase las teclas demasiado rápido para transmitir la secuencia completa, lo que provocaría que una pulsación de tecla interrumpa la secuencia de la pulsación de tecla anterior y confunda vi.

Esto haría que vi entrara inexplicablemente en modo de inserción e insertara [B [B [B [B [B [B [B] B] B] en su archivo si mantenía presionada la flecha hacia abajo. Digo inexplicablemente porque no hay nada en esta secuencia que deba ingresar al modo de inserción y el hecho de que cada secuencia comience con un carácter ESC debería haber salido del modo de inserción. Pero aún así, insertaría basura. No siempre, solo cuando tenías prisa.

Uno se cansó rápidamente de esto y decidió quedarse con las hjklteclas.


8
Por alguna razón, los programas de terminal TCP todavía usan teclas de flecha basadas en escape, y todavía no tienen una forma 100% confiable de distinguir entre presionar la tecla de escape y enviar el primer byte de una secuencia de escape de tecla de flecha.
supercat

1
@supercat Ellos hacen tener una forma fiable para distinguir aquellos. Se llama usando SC81T . El problema es más que muchos programas no negocian eso y es probable que algunos terminales no lo admitan.
jamessan

1
@jamessan: Si leí bien, estás sugiriendo que la forma confiable de distinguir las teclas de escape de las teclas de flecha es no usar las teclas de flecha basadas en escape, lo que se relaciona con mi comentario "por cualquier razón" sobre los programas que todavía usan escape- teclas de flecha basadas.
supercat

Hmm, tengo un viejo terminal de IBM que puede emular un VT100, podría tener que probar esto
una tijereta el

3
Ciertamente puedo confirmar que esto era cierto, al menos en el pasado, ya que durante los años 80 tuvimos que colocar letreros en la sala de la terminal de pregrado para no usar las teclas de flecha en vi por esta misma razón. Seguían desordenando sus archivos cuando el controlador tty interrumpía las interrupciones.
tchrist

28

Si bien estoy de acuerdo con @statox en que nadie debe ser castigado, rechazado, excomulgado o abrumado si elige usar las teclas de flecha ... use su software como mejor le parezca ... No exudaría como una gran actitud de laissez-faire si estuviera dando orientación a un nuevo usuario de mente abierta. Recomiendo encarecidamente que comiencen con las siguientes mejores prácticas. Son "mejores prácticas" por una razón ... han sido empleadas con buenos resultados por muchas personas que vinieron antes que tú y yo.

Diablos, incluso la propia ayuda de Vim te empuja en esa dirección , aunque no sin hipérbole (" mucho más lento") ...

También puede mover el cursor utilizando las teclas de flecha. Sin embargo, si lo hace, ralentizará en gran medida su edición porque al presionar las teclas de flecha, debe mover la mano de las teclas de texto a las teclas de flecha. Teniendo en cuenta que puede hacerlo cientos de veces por hora, esto puede llevar una cantidad de tiempo considerable.

También está el hecho de que cualquier elección que hagas al principio puede convertirse en hábitos difíciles de romper si quieres cambiar en el futuro. Entonces, si todo lo demás es igual, ¿por qué no adoptar un hábito recomendado ahora en lugar de correr el riesgo de que el uso de las teclas de flecha sea ineficiente o mata el carpo?

Con todo, considere hacer un esfuerzo honesto para hacer cosas sin las teclas de flecha. Después de un tiempo razonable si no puedes vivir sin arriba / abajo / izquierda / derecha ... no lo hagas.

... es lo que le diría a un nuevo usuario interesado en mi opinión. No te lo tomes personalmente si no estás de acuerdo (estoy hablando contigo, votante).


99
Incluso si acepta que de hecho es mejor que las teclas de flecha (ni siquiera estoy convencido de que lo sea), está en algún lugar al final de la lista de todas las "mejores prácticas" posibles. Yo diría que hay muchas muchas cosas más importantes que el uso de hjkl.
Martin Tournoij

55
@Carpetsmoker No creo que sea necesario clasificar las mejores prácticas. A menos que tenga un fuerte deseo de usar las teclas de flecha, ¿por qué no hacer lo que Vim recomienda? Particularmente si eres nuevo en Vim ... todos sabemos lo difícil que es cambiar la forma en que hacemos algo una vez que está arraigado.
B Layer

1
"ralentizas mucho tu edición", eso me parece una exageración ... sin embargo, estoy de acuerdo en que vale la pena intentarlo. Sinceramente, no es lo suficientemente importante como para pelear.
Shadow

2
@BLayer no, no aquí: esta es la discusión más civilizada sobre el tema que creo que he visto. Pero las guerras ciertamente se han librado ...
Shadow

1
don't think it's necessary to rank best practicesBueno, me parece que debemos enfocarnos en las cosas que nos dan el mejor valor en la vida, dado que los recursos son limitados y la vida es corta. Sé que las teclas hjkl son el corazón debido a una infancia mal utilizada jugando pícaro, larn, angband, etc. en una computadora portátil sin teclado numérico, pero algunas personas pasaron su infancia mejor y tendrán que "desaprender" las teclas de flecha independientemente. Creo que aprender movimientos, rangos, etc. es una forma mucho más útil de pasar el tiempo.
Martin Tournoij

16

Otras respuestas han dicho que la pérdida de eficiencia al mover las manos de la fila de casa no es un gran problema, y ​​estoy de acuerdo en su mayoría. Sin embargo, lo que es un gran problema está cuando se está aprendiendo vim, siempre utilizando las teclas de flecha para evitar volver pasaba al modo normal.

En otras palabras, el uso de un solo lugar donde habría usado uno hno es una gran pérdida de productividad, pero usar donde podría haber usado EscI es una gran pérdida.

Es por eso que la gente te dice que evites las teclas de flecha cuando estás aprendiendo vim, porque te obliga a aprender el modo normal en lugar de nunca abandonar el modo de inserción. El modo normal es donde están todas tus ganancias de eficiencia.


1
+1. En otras palabras: "No use las teclas de flecha, y no use hjkl". (Retención de la hipérbole intencional.)
wchargin

3
En realidad, en lugar de 10 veces que podría haber utilizado 1 0 o, aún más simple, Home. Este último funciona incluso en el Bloc de notas de Windows.
Ruslan

7

Hay dos razones principales por las que la gente dice que no debes usar las teclas de flecha. Algunos afirman que se prefiere hjkl porque mantiene las manos en la fila de inicio, lo cual no es falso , pero tampoco importa. Otros, incluido yo mismo, dirían que no debe usar las teclas de flecha si mueve más de unos pocos caracteres, pero tampoco debe usar hjkl.

Lo importante no es qué teclas estás usando, sino cuántas . Si desea pasar al principio de la palabra, no golpea hhh; se golpea b. Fin de la palabra es e, no llll. A partir de la línea: 0, final de la línea: $. Y cualquier cosa más, /searchpara el texto que existe donde quieres ir. (o cualquiera de los comandos de movimiento avanzado que prefiera).

Pero cada vez que te encuentras tecleando la misma tecla más de dos veces seguidas, hay una mejor manera de hacerlo.


7

Una afirmación más precisa podría ser "usar las teclas de flecha es una mala práctica al tratar de aprender vim mejor " . Las personas nuevas en vim están acostumbradas a usar las teclas de flecha para moverse y, por lo tanto, no aprenden hjkl, por lo que no tienen la oportunidad de ver si esto es preferible.

Personalmente, después de adquirir cierta familiaridad general con vim, desactivé las teclas de flecha por un tiempo para hjklacostumbrarme y las volví a habilitar más tarde para simplificar mi .vimrc. La sabiduría convencional es válida en mi caso; Una vez que supe cómo usar ambos hjkly las teclas de flecha, me encontré casi exclusivamente usando el primero.


66
Estoy en desacuerdo. Como dice este blog , ese enfoque de "todo o nada" para los principiantes ayuda a causar la reputación de vim "hostil para el usuario". Los nuevos usuarios comienzan, se atascan y se sienten abrumados y (como era de esperar) concluyen que vim es un desastre profano y vuelven a un editor donde pueden ser decentemente productivos. - Si estás aprendiendo a nadar, no te arrojes del mar al mar abierto. Es perfectamente aceptable remar alrededor de la piscina para niños hasta que te sientas cómodo con el agua.
RM

2
... no quiere decir que deshabilitar las teclas de flecha no funcionará para las personas. Pero es un paso "Me gusta vim y quiero aprender a usarlo mejor", no un paso "Soy nuevo en vim y quiero aprender a usarlo".
RM

5

La respuesta habitual implica eficiencia. Es probable que haya recibido capacitación a lo largo de los años para emplear la escritura táctil, que consiste en mantener las manos en asdf y jkl ;. La gran mayoría de las combinaciones de teclas en Vi están diseñadas alrededor de este hecho, incluidos los comandos de movimiento hjkl.

Personalmente, en realidad uso ambos. Uso hjkl cuando estoy editando activamente grandes secciones de texto y las teclas de flecha cuando me desplazo por los archivos de registro (y |, g, y / cuando estoy haciendo ediciones puntuales en todo un archivo). Esto es lo que funciona bien para mí, y en un caso como este, eso es lo que realmente importa.


2

Hace mucho tiempo, muchas terminales no tenían teclas de flecha, o no tenían las cuatro. Los sistemas de software que necesitaban navegación normalmente proporcionaban algún tipo de enfoque de navegación sin depender de las teclas de flecha, y vi's hjkl es un ejemplo canónico. (Otro ejemplo clásico es el ^ E- ^ S- ^ X- ^ D de WordStar.) A medida que la utilidad de navegación del teclado se hizo cada vez más obvia, más y más terminales nuevos comenzaron a venir con teclas de flecha, y los sistemas de software a menudo los asignaban a las viejas formas de navegación. Sin embargo, esto proporcionó una especie de preocupación de portabilidad: si los niños entrenados en las escuelas llegaran a confiar en una característica tan novedosa y elegante como las teclas de flecha, la idea era que tal vez no podrían ser productivos en el, una vez común, teclados sin teclas de flecha.

Por lo tanto, los profesores de cursos de computación básica comenzaron a advertir con precaución a los estudiantes que aprendieran a usar el mínimo común denominador para maximizar su empleabilidad. Y esta práctica ha sobrevivido durante mucho tiempo a cualquier razón que alguna vez pudo haber tenido.

En las implementaciones modernas de vi, la razón principal para preferir hjkl es que es un poco más rápido usar las teclas que ya están debajo de la mano que mover la mano a donde estén las teclas de flecha. La desventaja de evitar el cambio de contexto de su mano, por supuesto, es que puede necesitar realizar un cambio de contexto de vi. Hoy en día, cuando los humanos rara vez son atesorados por la velocidad de escritura, ya sea que hagas uno u otro es una cuestión de preferencia personal, y ya no hay nada inherentemente malo en usar las teclas de flecha, si alguna vez lo hubo.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.