next up previous contents
Siguiente: Movimientos basados en el Subir: Comandos específicamente dirigidos a Anterior: Comandos específicamente dirigidos a   Índice General


Movimientos simples del cursor

Para mover el cursor los comandos más simples son, lógicamente, los representados por las teclas de movimiento del cursor que nos permiten mover el cursor un carácter a derecha o izquierda, o una línea arriba o abajo, o desplazarlo al principio o al final de la línea.

En Vim funcionan las teclas de movimiento del cursor, y además lo hacen tanto en el modo normal como en el modo de inserción. Pero se proporcionan también comandos equivalentes a ellos. Veamos cuales son y después se explicará por qué se proporcionan estos comandos.

TECLA DEL CURSOR COMANDO
Flecha izquierda h
Flecha derecha l
Flecha arriba k
Flecha abajo j
Inicio 0 (cero)
Fin $
RePag CTRL-U
AvPag CTRL-D

En la tabla anterior he usado el nombre español de las teclas de movimiento del cursor. En inglés las teclas Inicio, Fin, RePag y AvPag se llaman, respectivamente, Home, End, PgUp y PgDn.

¿Por qué ofrece Vim un conjunto de comandos adicional para algo que ya hacen las teclas del cursor? Por un triple motivo. El primero es el de que no todos los teclados tienen teclas de movimiento del cursor. Hay teclados muy antiguos, aun en funcionamiento, que carecen de ellas y ello no debe impedir la ejecución correcta de Vim.

La segunda razón es la de facilitar la escritura de scripts para Vim, ya que es más fácil referirse a las teclas de movimiento del cursor de la misma manera que se hace referencia al resto de comandos.

Pero la razón fundamental es la de la efectividad. Los diseñadores de Vim calcularon que el comando que más veces se repite durante una edición de texto normal es el movimiento del cursor; y más concretamente el movimiento carácter a carácter o línea a línea, es decir: el que se suele hacer con las teclas de flecha. Ahora bien: si cada vez que hay que mover el cursor es preciso levantar la mano del teclado normal para llevarla hasta las flechas y luego devolverla a su lugar de inicio, se pueden llegar a perder literalmente horas en estos movimientos; pero si las teclas para mover el cursor están literalmente al alcance de la punta de los dedos, se ahorrará un tiempo precioso. No olvide el lector que los viejos usuarios de Unix (al igual que los viejos rockeros) tienen sus manías y una de ellas es el evitar pérdidas injustificadas de tiempo.

Esta razón explica también el porqué se han escogido las teclas ``hjkl'' para los cuatro movimientos básicos del cursor. Normalmente la tecla que ejecuta un comando es la inicial del nombre del mismo en inglés, pero aquí no: estas teclas se han elegido por su situación en el teclado: exactamente en la línea central y en el lugar en el que reposan los dedos de la mano derecha de un mecanógrafo profesional cuando no está escribiendo: más rapidez imposible.

Esa razón llevó a elegir como teclas para los movimientos básicos ``hjkl''. El asignarle a cada una de ellas uno de los cuatro movimientos responde a otras razones: la 0 0«h0 0» es la que está más a la izquierda, y por ello mueve a la izquierda; la 0 0«l0 0» es la más a la derecha y por ello mueve en tal situación. La 0 0«j0 0» --dicen los diseñadores de Vim-- parece una flecha apuntando hacia abajo y esa es la dirección en la que mueve el cursor, y la 0 0«k0 0» es la única tecla que queda por lo que se le asigna la única dirección que no hemos asignado aun.

Los españoles estamos acostumbrados a que el nombre de las teclas no nos diga gran cosa, porque casi siempre se elige en inglés. Pero los angloparlantes no están acostumbrados, y además para ellos es casi una aberración que la tecla 0 0«l0 0» (inicial de ``left'' = izquierda) mueva precisamente a la derecha. Por eso es por lo que en todos los manuales de Vim se explica con tanto detalle la razón de haber escogido estas teclas.

Por otra parte, todos estos comandos admiten argumento numérico salvo el de ir al principio de línea. El argumento numérico se traduce en el número de movimientos que se harán y así 0 0«3k0 0» mueve el cursor tres líneas hacia arriba, igual efecto que el que obtendremos pulsando 3 y luego la flecha arriba.

El argumento numérico en el caso del movimiento hasta el final de línea funciona de manera especial, porque no tiene sentido ir más de una vez al final de la línea, cuando hemos ido una vez no tiene sentido volver a ir allí. Por eso en este caso el argumento numérico se interpreta como número de líneas hacia abajo, y así 0 0«3$0 0» desplazará el cursor hasta el final de la tercera línea contando desde la actual hacia abajo.

Ahora bien: como el comando para ir al principio de la línea es un cero (0 0«00 0») aquí no cabe argumento numérico, pues entonces no habría forma de saber si el 0 0«00 0» es ya la orden o forma parte del número. Esa es la razón de que en este caso no se admita argumento numérico. Y lo mismo ocurre si en lugar del comando 0 0«00 0» usamos la tecla ``Inicio'' el argumento numérico será ignorado.


next up previous contents
Siguiente: Movimientos basados en el Subir: Comandos específicamente dirigidos a Anterior: Comandos específicamente dirigidos a   Índice General
Cancerbero 2005-02-12