¡Esta es una revisión vieja del documento!
Para entrar en modo de comandos apretaremos Esc en modo de inserción.
| :q! | Salir sin guardar. |
| :wq | Salir y guardar. |
| :w fichero.txt | Guardar en el fichero llamado 'fichero.txt' |
| :w | Guardar. |
| i | Entrar en modo de inserción. |
| :77 | Ir a la línia 77. |
| G | Ir a la última línia. |
| dd | Corta\Elimina la línia actual. |
| 5dd | Corta\Elimina 5 línias a partir de la línia actual. |
| p | Pega en la línia anterior a la actual. |
| P | Pega en la línia posterior a la actual. |
| u | Deshace un cambio. |
| /perro | Busca 'perro' posteriormente. |
| ?perro | Busca 'perro' anteriormente. |
| n | Sigue la búsqueda. |
| N | Da un paso atrás en la búsqueda. |
Mencionas cortar con yy y te quejas de que casi nunca quieres cortar líneas completas. En realidad los programadores, editando del código fuente, a menudo trabajan con líneas completas, rangos de líneas y bloques de código. Aún así, yy es una de las muchas formas de trasladar texto al buffer de copia anónimo (o, tal y como se llama en vi, registro).
La esencia de vi es que es un lenguaje. La primera y es un verbo. La sentencia yy es una sentencia simple la cual es una abreviación para 0y$.
Esto puede ser expresado como ddP (elimina la lína actual y copiala en un lugar nuevo, dejando una copia en el registro. La y y la d son vebos que realizan la acción indicada por el sujeto. Entonces yW significa “recoge de aquí (posición del cursor) hasta el final de la palabra actual” y y'a es “recoge desde aquí hasta la línia marcada como 'a”.
Si sólo entiendes lo básico, los movimientos arriba, abajo, derecha e izquierda entondes vi no será más que una copia del notepad. Vale, aún tienes el fortao de sintaxis y la abilidad de manejar ficheros de más de 45kb.
vi tiene 26 marcas y 26 registros. Una marca se asigna a cualquier posición del cursor con m. Cada marca está definida por una letra minuscula. Por lo que ma asigna la marca 'a' a la posición actual del cursor y mz asigna la marca 'z'. Puedes moverte entre las líneas marcadas usando '. Por lo que 'a se mueve al principio de la línia que contenga la marca 'a'. Y moverte a la localización concreta de la marca utilizando `. Por lo que `z irá a la posición concreta de la marca 'z'.