Estos son algunos consejos para el usuario "novato" de vi. Primero, ten cerca de ti una buena chuleta con los comandos. Un poco más adelante en este mismo documento encontrarás un pequeño manual de referencia rápida. Segundo, consíguete un buen libro sobre el vi (bueno... Si no un libro, en la red hay varios buenos documentos que lo cubren.). Este documento no es la mejor forma de aprender vi, porque no trata el tema de una forma "pedagógica", sino que simplemente sirve para resolver problemas. Si vas a comprar un libro, ten cuidado a la hora de escogerlo, y comprueba previamente que contenga ejercicios que puedas utilizar para ir probando lo que vas aprendiendo.
También puedes tratar de conseguir vilearn o vitutor, que están diseñados para enseñar los conceptos básicos del vi.
Bueno... Podrá parecer un poco tonto, pero hay algunos juegos
basados en UNIX que nos podrán ayudar para aprender vi. La clave
está en que estos juegos suelen utilizar un juego de teclas muy
similar al juego de teclas utilizado por el editor para realizar las
tareas básicas. Las teclas principales que nos enseñarán
son las de movimoento de cursor: hjkl. NetHack, rouge, moria, omega
worm y snake son ejemplos válidos de este tipo de juegos.
El vi diferencia entre dos modos de trabajo diferentes: El modo Comando y
el modo Edición. Esta diferenciación ha sido alabada y criticada
a la vez, ya que es una de las principales causas de errores a la hora de
escribir, y es una de las principales ventajas que tiene a la hora de acelerar
nuestro trabajo. Comprender esta diferencia y acostumbrarse a ella es VITAL
para aprender y trabajar con este editor.
Cuando comenzamos a trabajar, el vi está en modo Comando. En este
modo, casi cualquier pulsación de tecla que realicemos se
interpretará como un comando, y tendrá el consiguiente efecto
sobre nuestro texto. De esta forma, podremos movernos por el texto, borrar,
remplazar, cortar, pegar, etc... El modo Edició es aquel en el que
editamos realmente nuestro texto, y cualquier pulsación de tecla se
convertirá en texto que hemos añadido al documento.
Los comandos que nos ponen en modo Edición son a, i, c, C, O, o y otros.
<Esc> o ^C nos sacará del modo Edición y nos volverán a llevar a modo Comando.
Acostúmbrate a esta diferencia, ya que es la que hace al vi totalmente
diferente al resto de los editores convencionales. También es lo que hace
que podamos realizar la gran mayoria de las tareas sin necesidad de retirar
las manos del teclado (Ideal para los que saben mecanografía).
Prueba a pulsar ^[ . Si tu teclado tiene una tecla <Meta> ,
prueba con ella. Si no te funciona ninguna de estas, entonces prueba con
^3.
Esas tildes están para indicarte que las líneas que hay al
final del fichero no pertenecen realmente al texto, que están ahí
sólo para "rellenar" hasta el final de la pantalla. Desde el final del
documento hasta el final de la pantalla verás que aparecen estas tildes.
Primero que nada, si tu terminal está configurado correctamente,
deberías poder utilizar las teclas de cursor (si las tienes). De todas
formas, si vas a utilizar mucho el vi, deberías aprenderte las
pulsaciones hjkl, ya que son más rápidas de escribir. Además, si utilizas la Korn-Shell, son necesarias para editar las líneas de
comando.
De todas formas, y siempre estando en modo comando, podrás utilizar
las teclas <Del> y <espacio> para moverte a la izquierda y a la
derecha respectivamente.
Tienes que utilizar el comando :q! . Si el vi parece que se te
ha "quedado colgado", puede ser que hayas pulsado ^S por error.
La pulsación de ^S suele significar XOFF, lo que le indica
al UNIX que tu terminal no puede recibir más información.
El UNIX entonces no te enviará más texto hasta que se le
envíe un XON (que se corresponde con el carácter ^Q).
:r <Fichero>
Por ejemplo, para insertar el fichero /etc/motd, escribe: :r /etc/motd
Esto insertaá el fichero en la posición actual del cursor.
Si especificas un número antes de la r insertará el fichero
en la línea especificada.
/<texto> Busca hacia adelante. ?<text>
Busca hacia atrás. ?? o // repiten la última
búsqueda. Ademñas, podrás utilizar los comandos n
y N para repetir la búsqueda hacia adelante y hacia
atrás respectivamente. Cuando especificamos el texto que buscamos
podremos utilizar las expresiones regulares ( puedes encontrar
información sobre esto en regexp(5)).
/^V^<seq>
^V le indica al vi que tome el siguiente carácter
literalmente, y que no lo interprete como un comando.
Si tu ordenador tiene el comando fmti, todo lo que has de hacer
es picar !}fmt desde el modo Edición. Esto rejustificará
el texto desde la posición actual hasta el final del párrafo.
De todas formas, ten cuidado: Al menos en HP-UX el comando fmt sirve
para formatear un array de discos, y no para formatear texto! :-). En el
caso de que no tengas el comando fmt, entonces tenrás que
buscar un programa similar.
Bueno... esto es un poco complicado de explicar, pero espero que seguro
que lo podremos conseguir.
El comando "<letra>yy copia una línea de texto en el
registro <letra>. (Un registro es un buffer donde el vi guarda
información que se ha cortado o copiado) El valor de <letra>
debe estar entre "a" y "z".El comando "<letra>dd borra una
línea y la pone en el registro <letra>. También podremos
utilizar un número anter de los comandos yy y idd,
para especificar cuántas líneas queremos cortar o copiar en el
registro. Si utilizamos YY o DD (en mayúsculas),
entonces no sustituiremos el contenido del registro, sino que dejaremos con
el contenido original.
Los comandos "<letter>p y "<letter>P pegan
el contenido del registro <letra> antes y después de la
posición actual del cursor respectivamente. Si el registro contiene
un principio o un final de línea, el texto se pegará en otra
línea según sea necesario. Normalmente utilizaremos el
comando y (de yank) seguido de cualquier comando de movimiento, lo
que indicará poner en el registro indicado por la letra (o en el
registro por defecto si no especificamos ninguna) el texto situado entre
el cursor y el final del comando de movimiento. Así, el comando
y$ pondrá en el registro por defecto todo el texto
situado desde el cursor hasta el final de línea; el comando yH
copiará desde el cursor hasta el principio del fichero, y así
sucesivamente. Hay que tener en cuenta que cuando utilizamos el registro
o buffer por defecto, cualquier otro comando de borrado (dd, dw, x,
etc...) borrará también el contenido de este registro. Mas
exactamente, el registro por defecto es el que se utiliza para implementar
el comando u (de Undo, deshacer).
Por ejemplo, para mover el párrafo anterior tendríamos que
posicionarnos en el principio del párrafo y teclear "a16dd. A
continuación nos posicionaríamos donde lo queramos pegar y
pulsaríamos "ap, con lo que pegaríamos las 16
líneas que contiene el registro a en la línea inferior.
Si lo que necesitas es cortar y pegar áreas de texto que no
están acabadas en un principio o final de línea, lo que has
de hacer es marcar una de las posiciones (origen o final del movimiento)
utilizando el comando m<letra>, que te marca la posición
actual del cursor. Luego, podremos expresar este comando de movimiento
(según lo que pone en el párrafo anterior) utilizando el
carácter ` seguido de la letra que hemos utilizado para
marcar la posición. Así para marcar una posición con el
nombre z pulsaremos mz y luego, para copiar al buffer a todo el
texto comprendido entre la posición del cursor y la marca z, picaremos
"ay`z . Luego, para pegar este texto en otro sitio, nos desplazaremos
y picaremos "ap .
Una nota para los editores en castellano y otras lenguas "de 8 bits". El
carácter ` es el que se utiliza para indicar graves o acentos
abiertos, así que si utilizamos una marca cuyo nombre sea una vocal
no podremos recuperar esa posición posteriormente (siempre y cuando
nuestro entorno de trabajo esté correctamente configurado y soporte
letras como àèìòù).
El comando u deshace el último comando ejecutado. El
comando U (en mayúsculas) deshace los cambios realizados en
la línea actual, siempre y cuando no hayamos cambiado de línea.
El comando :e! lee de nuevo el fichero que estamos editando, sin
grabar ninguna modificación. Además, el texto borrado se almacena
en los registros del 1 al 9, con
lo que "<n>p pega el texto borrado en la posición <n>.
Podremos encontrar rápidamente el texto borrado si pulsamos "1pi
, luego pulsamos u (para deshacer la inserción) y
probamos con el siguiente. A fin de facilitar esta tarea, el comando .
en este caso en lugar de repetir el último comando, lo hará
con el siguiente registro. De esta forma, tendremos que picar "1p u . u
. u ... hasta encontrar y deshacer la operación de borrado que
buscábamos.
El comando :[m],[n]w <fichero> graba las líneas de
la m a la n en <fichero>.
Este mecanismo de utilizar numeración de líneas funciona con
casi todos los comandos del modo Ex (los que comienzan por :) Si utilizas
:[m],[n]w >> <fichero> se añadirá el texto al final del fichero.
Los comandos que empiezan por : son comandos del editor ex. Nos proporcionan
una gran flexibilidad, como buscar y remplazar con opciones avanzadas.
(C)opyright, E. Larry Lidz, 1994, 1995. All Rights Reserved.
2.1 - Qué juegos me servirán para aprender?
2.2 - Cuál es la diferencia entre los modos Comando y Edición?
2.3 - Hey! Un momento! Mi teclado no tiene la tecla <Esc>! Qué debo hacer?
2.4 - Qué son todas esas tildes (~)?
2.5 - No me consigo acostumbrar a hjkl. Alguna sugerencia?
2.6 - Cómo puedo salir sin grabar?
2.7 - Cómo puedo insertar un fichero?
2.8 - Cómo se realizan búsquedas de texto?
2.9 - Y cómo busco una secuencia de escape?
2.10 - Cómo formateo el texto?
2.11 - Cómo se copia texto?
2.12 - Arrrg!!! He picado dG y he perdido todo el texto!
Qué puedo hacer? (O si no, qué debo hacer cuando me equivoco?
2.13 - Acabo de terminar mi documento y me dicen que tengo que entregar
cada sección en un fichero diferente. Qué hago?
2.14 - Qué hay de esos comandos que comienzan con :?
[Indice][Siguiente][Anterior]
Esta versión de las Faq de vi ha sido recopilada por:Baruch Promislow de Macom Networking LTD.
La versión en castellano ha sido realizada por: Antonio Valle, de Abast Systems, S.A.
(C)opyright, Antonio Valle, 1996. Todos los Derechos Reservados.