Page 40
Alvaro Alea
Apéndice A – Editor de Textos VI
__rendered_path__2332
1. Copia del texto a un buffer.
2. Movimiento del cursor al lugar de destino.
3. Pegar (poner) el texto en el buffer de edición.
El buffer de edición no es sino el propio fichero en el que usted está trabajando.
Para Copiar texto al buffer sin nombre use el comando |_y_|.
yy Mueve una copia de la línea actual al buffer sin nombre.
Y Mueve una copia de la línea actual al buffer sin nombre.
nyy Mueve las siguientes n líneas al buffer sin nombre.
nY Mueve las siguientes n líneas al buffer sin nombre.
yw Mueve una palabra al buffer sin nombre.
ynw Mueve n palabras al buffer sin nombre.
nyw Mueve n palabras al buffer sin nombre.
y$ Mueve el texto desde la posición actual al final de la línea al buffer sin nombre.
El buffer sin nombre es un buffer temporal que puede ser fácilmente afectado por otros comandos
comunes. Hay ocasiones en las cuales necesitamos mantener el contenido de un buffer durante un período
más extenso de tiempo. En este caso se usaría un buffer con nombre. vi tiene 26 buffers con nombre. Los
buffers usan las letras del alfabeto como el nombre de identificación. Para distinguir un comando de un
buffer con nombre, vi usa el carácter |_"_|. Cuando use un buffer con nombre de letra minúscula los
contenidos se sobre escriben, mientras que el uso del nombre en letra mayúscula añade el nuevo texto al
contenido actual.
"ayy Mueve la línea actual al buffer con nombre a.
"aY Mueve la línea actual al buffer con nombre a.
"byw Mueve la palabra actual al buffer con nombre b.
"Byw Añade la palabra actual al contenido del buffer b.
"by3w Mueve las siguientes 3 palabras al buffer b.
Use el comando |_p_| para pegar el contenido del buffer al buffer de edición.
p Pegar del buffer sin nombre a la DERECHA del cursor.
P Pegar del buffer sin nombre a la IZQUIERDA del cursor.
nP Pegar n copias del buffer sin nombre a la IZQUIERDA del cursor.
"aP Pegar del buffer con nombre "a" a la DERECHA del cursor.
"b3P Pegar 3 copias del buffer con nombre "b" a la IZQUIERDA del cursor.
Cuando use vi dentro de un xterm tiene otra opción para copiar texto. Marque el bloque de texto que
desea copiar arrastrando el cursor del ratón sobre el texto. Si mantiene pulsado el botón izquierdo del
ratón y arrastra el ratón desde el comienzo al final, invertirá el vídeo del texto. Esta operación
automáticamente coloca el texto en un buffer reservado para el servidor de X Windows.
Para pegar el texto, pulse el botón del medio. Acuérdese de poner vi en modo de inserción dado que la
entrada de texto se podría interpretar como comandos y el resultado sería cuando menos desagradable.
Usando la misma técnica se puede copiar una sola palabra haciendo doble click con el botón izquierdo del
ratón sobre la palabra. Solamente se copiará esa única palabra. Para pegarla se usa el mismo
procedimiento que anteriormente. Los contenidos del buffer sólo cambian cuando se marca otro bloque de
texto.
Para mover un bloque de texto son necesarios tres pasos.
1. Borrar el texto para ponerlo en un buffer con o sin nombre.
2. Mover el cursor a la posición de destino.
__rendered_path__2330__rendered_path__2331
3. Pegar el buffer.

Page 41
Apéndice A – Editor de Textos VI
Manual de Linux
__rendered_path__2107
El proceso es el mismo que el de copia con un solo cambio en el primer paso para borrar. Cuando
Se usa el comando |_dd_|, la línea se borra y se coloca en el buffer sin nombre. Luego puede poner el
Contenido del mismo modo que lo hizo cuando copió el texto en la posición deseada.
"add Borrar la línea y ponerla en el buffer con nombre a.
"a4dd Borrar cuatro líneas y ponerlas en el buffer con nombre a.
dw Borrar una palabra y ponerla en el buffer sin nombre.
Vea la sección sobre el modificado de texto para ver más ejemplos de borrado de texto.
En el caso de que el sistema falle, el contenido de todos los buffers se pierde excepto el contenido de los
buffers de edición, que se puede recuperar (ver comandos Útiles).
__rendered_path__568
vi dispone de varios comandos para búsqueda. Usted puede buscar desde un solo carácter hasta una
__rendered_path__569__rendered_path__578
expresión completa.
__rendered_path__570__rendered_path__580
Los dos comandos principales de búsqueda basados en caracteres son |_f_| y |_t_|.
__rendered_path__571__rendered_path__572__rendered_path__583
fc Encuentra el siguiente carácter c. Se mueve a la derecha del siguiente.
__rendered_path__573__rendered_path__584
Fc Encuentra el siguiente carácter c. Se mueve a la izquierda del anterior.
__rendered_path__574__rendered_path__583
tc Se mueve a la DERECHA al carácter anterior al siguiente c.
__rendered_path__575
Tc Se mueve a la IZQUIERDA al carácter que sigue al c anterior. vi(En algunas esto es lo mismo que Fc).
__rendered_path__576__rendered_path__577
; Repite el último comando f,F,t,T.
__rendered_path__575
, Igual que (;) pero cambiando la dirección del comando original.
__rendered_path__579
Si el carácter que usted buscaba no se encuentra, vi emitirá un pitido o le dará otro tipo de señal (tal vez
__rendered_path__581
un parpadeo de toda la pantalla).
__rendered_path__574
vi le permite buscar una cadena de texto en el buffer de edición.
__rendered_path__582
/tira Busca hacia la derecha y abajo la siguiente instancia de "tira".
__rendered_path__582
?tira Busca hacia la izquierda y arriba la siguiente instancia de "tira".
__rendered_path__581
n Repite el último comando / o ?.
N Repite el último comando / o ? en la dirección opuesta.
Cuando use los comandos ||/_||or |_?_|, la última línea en la parte baja de la pantalla se vaciará.
Introduzca en esa línea la tira de caracteres que desea buscar y pulse |_Intro_|.
La tira en el comando ||/_||or |_?_|puede ser una expresión regular. Una expresión regular puede ser una
descripción de un conjunto de tiras. La descripción se construye usando texto entremezclado con
caracteres especiales. Los caracteres especiales de una expresión regular son. * [ ] ^ $.
. Vale por cualquier carácter excepto el carácter de nueva línea.
" Tecla de "escape" para cualquier carácter especial.
* Vale por 0 o más instancias del carácter anterior.
[ ] Busca exactamente uno de los caracteres incluidos entre los corchetes.
^ El carácter que sigue a ^ debe estar al principio de la línea.
$ El carácter que precede a $ se busca al final de la línea.
[^] Busca cualquier cosa que no se encuentre después de ^ dentro de los corchetes.
[-] Busca un rango de caracteres.
El único modo de acostumbrarse a usar las expresiones regulares es usándolas. A continuación mostramos
__rendered_path__2105__rendered_path__2106
varios ejemplos de uso:

Page 42
Alvaro Alea
Apéndice A – Editor de Textos VI
__rendered_path__2325
c.ch Coincide con coche, cacho, cochera, etc.
c".pe Coincide con c.pe, c.per, etc.
sto*p Coincide con stp, stop, stoop, etc.
car.*n Coincide con cartón, carrillón, carmen, etc.
xyz.* Coincide con xyz al final de la línea.
^Los Encuentra cualquier línea que empiece con Los.
abcdef$ Encuentra cualquier línea que termine con abcdef.
^Solo$ Coincide con cualquier línea que sólo tenga la palabra "Solo".
p[aiue]so Coincide con paso, piso, puso, peso.
Ver[D-F] Coincide con VerD, VerE, VerF.
Ver[^1-9] Coincide con Ver siempre que a continuación NO haya un número.
the[ir][re] Coincide con their, therr, there, theie.
[A-Za-z][A-Za-z]* Coincide con cualquier palabra.
vi usa el modo de comandos de ex para llevar a cabo búsquedas y sustituciones. Todos los comandos que
empiezan con dos puntos son comandos en modo ex.
Los comandos de búsqueda y sustitución permiten que se usen expresiones regulares sobre un rango de
líneas y sustituir la tira de caracteres que se busca. El usuario puede pedir confirmación antes de que se
realice la sustitución. Merece la pena hacer una revisión de la representación de los números de línea en el
tutorial de ed.
:<prim>,<ult>s/<busca>/<sust>/g Comando general.
:1,$s/los/Los/g Buscar el fichero entero y sustituir los por Los.
:%s/the/The/g % significa el fichero entero (igual que arriba).
:.,5s/^.*//g Borra el contenido de la línea actual hasta la quinta.
:%s/los/Los/gc Sustituye "los" con "Los" preguntando antes de hacer la operación.
:%s/^....//g Borra los primeros cuatro caracteres de cada línea.
El comando de búsqueda es muy potente cuando se combina con las expresiones regulares. Si no se
incluye la directiva |_g_| entonces el cambio sólo se aplica a la primera instancia que se encuentre en cada
línea.
En ocasiones usted quiere usar los caracteres de búsqueda en los caracteres de sustitución. Se puede
reescribir todo el comando en la línea pero vi permite que los caracteres de sustitución incluyan algunos
caracteres especiales.
:1,5s/ayuda/&ndo/g Sustituye ayuda por ayudando en las cinco primeras líneas.
:%s/ */&&/g Duplica el número de espacios entre palabras.
El uso de la tira de caracteres completa para búsqueda tiene sus límites y por lo tanto vi usa los paréntesis
en secuencia de escape ||_(_|| y ||_)_||para seleccionar el rango de la sustitución. El uso de un dígito en
secuencia de escape |_1_| identifica el rango en el orden de la definición y la sustitución se puede hacer.
:s/"^"(.*"):.*/"1/g Borra todo después de e incluyendo los dos puntos.
:s/"(.*"):"(.*")/"2:"1/g Da la vuelta a las palabras a los dos lados de los dos puntos.
vi ofrece comandos muy potentes que muchos editores de texto modernos no tienen o no pueden ofrecer.
El coste de esta potencia suele ser también el principal argumento en contra de vi. Los comandos pueden
ser difíciles de aprender y leer. Sin embargo, la mayoría de las cosas buenas suelen ser un poco extrañas al
principio. Con un poco de práctica y tiempo, los comandos de vi se convertirán en una segunda naturaleza
__rendered_path__2323__rendered_path__2324
para Ud..

Page 43
Apéndice B - Sitios de Internet
Manual de Linux
__rendered_path__39__rendered_path__48__rendered_path__1436
Esta es una pequeña lista de sitios con Libros en formato electrónico sobre Linux.
__rendered_path__40__rendered_path__41__rendered_path__42
http://es.tldp.org - contiene la mayoría de la documentación que existe para Linux traducida al
__rendered_path__43__rendered_path__44
español, los libros de linuxdoc, los "comos" traducción de los howto y las paginas del man. Todas estas
__rendered_path__45__rendered_path__47
traducciones están echas por un equipo de voluntarios por lo que no siempre están completas o
__rendered_path__46__rendered_path__44
actualizadas, aun así son una referencia imprescindible.
__rendered_path__49__rendered_path__50
Destacan entre otro el Guía de instalación Oficial de RedHat, la Guía del usuario de Linux, y Linux,
__rendered_path__44
instalación y 1º Pasos
__rendered_path__51__rendered_path__53
http://www.tldp.org contiene el mismo tipo de información que Lucas, pero debido a que la
__rendered_path__52__rendered_path__42
mayoría de la documentación se escribe en ingles, su contenido es mas completo y/o actualizado.
__rendered_path__43__rendered_path__50
De http://andercheran.aiind.upv.es/toni/personal/index.html puedes bajarte un
__rendered_path__46__rendered_path__55
interesante libro llamado Introducción al sistema operativo Unix y otro manual sobre seguridad.
__rendered_path__54__rendered_path__42
http://www.tayuda.com tiene una serie de libros sobre informática llamada "aprende informática
__rendered_path__54__rendered_path__50
como si estuvieses en primero" con uno dedicado a Linux en la sección de sistemas operativos.
__rendered_path__1437
Además puedes encontrar información y noticias (en español) sobre Linux en:
http://www.barrapunto.com – Noticias del S.L. Y en general.
http://www.hispalinux.org – Asociacion de Usuarios de Linux (España)
http://www.asturlinux.org – Asociacion de Usuarios de Linux (Asturias)
http://www.laespiral.org – Informacion sobre Debian
http://www.debian-es.org - Usuarios de Debian
http://www.fedora-es.com. - Usuarios de Red Hat
http://www.gentoo-es.org - Usuarios de Geento
Y en ingles en:
http://www.linux.com – Portar comercial sobre Linux
http://www.freshmeat.net – Noticias sobre Software Nuevo o Actualizado
http://www.slashdot.org – Noticias de S.L. Y en general
http://www.linuxgames.com – Juegos para Linux
http://www.happypenguin.org – Juegos para Linux
Web de las distribuciones:
http://www.redhat.com
http://www.mandrakesoft.com
http://www.debian.org
__rendered_path__1434__rendered_path__1435
http://www.gentoo.org

Page 44
Alvaro Alea
Apéndice C -Recursos
__rendered_path__27__rendered_path__36__rendered_path__731
El apéndice A – Editor de Textos VI ha sido sacado de Linux Instalación y Primeros Pasos, de Matt
__rendered_path__28__rendered_path__29__rendered_path__30
Wells, disponible en http://es.tldp.org.
__rendered_path__31__rendered_path__32
Las capturas de pantalla del Tema 3 – Entorno Grafico han sido obtenidas de http://www.kde.org y
__rendered_path__33__rendered_path__37
http://www.gnome.org respectivamente.
__rendered_path__34__rendered_path__39
Alvaro Alea Fernández, (email: alvaro@asturlinux.org) es Ingeniero Técnico Electrónico, trabaja como
__rendered_path__35
administrador de sistemas Linux, y Diseño grafico, es socio fundador de la asociación Asturlinux,
__rendered_path__34
(http://www.asturlinux.org)y en sus ratos libres intenta programar un emulador de spectrum en C bajo
__rendered_path__33
licencia GPL (http://aspectrum.sourceforge.net)
__rendered_path__38
2002/XX/XX - Primera Versión.
__rendered_path__40
2003/12/20 - Añadido Información sobre la instalación y servicios de Red, Capturas de Pantalla.
__rendered_path__41
Se permite la libre copia y distribucion de este documento en lo terminos de la Licencia GPL V2.
__rendered_path__42__rendered_path__43__rendered_path__44__rendered_path__45__rendered_path__46__rendered_path__47__rendered_path__48__rendered_path__44__rendered_path__49__rendered_path__50__rendered_path__51__rendered_path__45__rendered_path__46__rendered_path__47__rendered_path__52__rendered_path__53__rendered_path__50__rendered_path__49__rendered_path__257__rendered_path__258__rendered_path__45__rendered_path__53__rendered_path__47__rendered_path__551__rendered_path__46__rendered_path__47__rendered_path__552__rendered_path__48__rendered_path__553__rendered_path__52__rendered_path__630__rendered_path__48__rendered_path__631__rendered_path__46__rendered_path__52__rendered_path__631__rendered_path__48__rendered_path__44__rendered_path__729__rendered_path__730__rendered_path__732
Las marcas registradas son propiedad de sus respectivos dueños.