| Esta p�gina puede ser redistribuida libremente bajo los t�rminos de la licencia GPL. Vease ( GPL texto original ) o si lo prefiere (Traducci�n espa�ola no oficial de la GPL) Al margen de las obligaciones legales que se derivan del uso de esta licencia rogamos sea respetada la referencia a su lugar de publicaci�n original www.ciberdroide.com. y a su autor original Antonio Castro Snurmacher (Madrid 01/01/2000). |
|
Esta ausencia de garant�a se hace extensa a cualquier tipo de uso de este material y muy especialmente a las pr�cticas, ejercicios, y de ejemplos que encuentre en estas p�ginas. Deber� trabajar siempre salvo indicaci�n contraria con un SO Linux y con un usario distinto de 'root' sin privilegios especiales. Como directorio de trabajo se procurar� usar el directorio '/tmp' o alg�n otro que no contenga informaci�n valiosa. Tampoco se considera buena idea practicar en una m�quina que contenga informaci�n valiosa. Todo esto son recomendaciones de prudencia. En cualquier caso si algo sale mal toda la responsabilidad ser� �nicamente suya. En ning�n caso podr� reclamar a nadie por da�os y perjuicios derivados del uso de este material. Para m�s informaci�n lea el contenido de la licencia GPL y abstengase de hacer pr�cticas si no est� dispuesto a asumir toda la responsabilidad.
|
Introducci�n
En primer lugar vamos a dedicar bastante esfuerzo a explicar porque
aprender 'vi'. Quiz�s pens� que este cap�tulo no era para usted
porque ya sabe usar otro editor. Tambi�n vamos explicar la necesidad
de dedicar dos largos cap�tulos a este editor.
Cuando finalice este cap�tulo podr� editar sus ficheros con 'vi'
y hacer bastante trabajo �til pero para ello quizas necesite algo
m�s de esfuerzo que en cap�tulos anteriores y no porque sea dificil
sino porque tendr� que practicar bastante por su propia cuenta.
Otra cosa ser� sacarle el m�ximo partido a 'vi'. En un segundo cap�tulo
dedicado a 'vi' veremos opciones m�s avanzadas. Son opciones que quiz�s no
necesite usar tan frecuentemente pero cuando tenga oportunidad de usarlas
comprender� la potencia el editor 'vi'.
Muchos editores actuales permiten usar distintos tipos de letras y
generan documentos con un aspecto precioso que adem�s coincide lo que se
ve en pantalla cuando se edita, y con lo que saldr� por la impresora.
Est� claro que 'vi' no sirve para esto. 'vi' est� dise�ado para editar
ficheros en formato de texto est�ndar. Pero aunque solo sirva para este
formato de texto lo hace muy bien y siempre tendremos oportunidad de usarlo
porque a un compilador, o a un interprete le da igual la est�tica.
Son muchos los editores disponibles en Linux pero desde un principio
dijimos que este curso podr�a servir en gran medida para aprender
otros SO tipo Unix. El editor 'vi' est� presente desde hace mucho
tiempo en un mont�n de sistemas tipo Unix. Aqu� explicaremos solo
unos pocos aspectos de 'vi' con la idea de que pueda realizar con
razonable soltura la edici�n
de un texto en 'vi'. Con muy pocos comandos de 'vi' se
pueden hacer muchas cosas y 'vi' es un editor que para ciertas
tareas resulta de una potencia incre�ble. El que escribe estas lineas
lo est� haciendo con 'vi' y lleva muchos a�os usando este editor pr�cticamente
para casi todo y le saco un gran partido, pero cada vez que me encuentro
con algui�n que sabe bastante de 'vi' aprendo algo nuevo.
'vi' es un editor muy pr�ctico sin tener que conocerlo a fondo pero en
manos de un experto resulta de una eficacia espectacular.
'vi' es un editor de lineas interactivo y ha sido muy criticado.
Una de las razones para ello es que
tiene varios estados o formas de funcionamiento y si uno pasa de un estado
a otro sin darse cuenta y continua tecleando cosas, puede ocurrir un peque�o
destrozo en el fichero que est� editando. Otro inconveniente de 'vi'
es que requiere un poquito de aprendizaje. Hay much�sima gente que est�
acostumbrada a usar otros editores m�s intuitivos y porque no decirlo
m�s c�modos, y rechazan a 'vi' como algo prehist�rico.
Otra cosa que suele criticarse es que
se usan letras del teclado para cosas tan normales como el movimiento del
cursor y la paginaci�n del texto pero este es un claro ejemplo del
condicionamiento de la cultura de Microsoft y de los PCs. 'vi' fue
dise�ado para que se pudiera usar en una gran variedad de sistemas
y terminales. El uso de las teclas de flechas puede lograrse mediante
la adecuada configuraci�n de 'vi'. Uno de los puntos fuertes de 'vi'
es su adaptabilidad.
Quiz�s una de las m�s poderosas
razones para aprender 'vi' es que 'vi' forma parte de
la cultura de los SO tipo Unix. Muchas personas acostumbradas a
trabajar por ejemplo con Windows asumir�n como est�ndar cosas que
no lo son y cuando se encuentran algo diferente intentan aprovechar
al m�ximo sus conocimientos anteriores.
Generalmente existe una exagerad�sima
tendencia a continuar usando el primer editor que se aprendi� y luego se
cambia solo de editor obligado por circunstancias poderosas. Nosotros
hemos decidido que en posteriores lecciones asumiremos que usted ya
sabe usar 'vi'. Pronto tendr� que hacer sus primeros programas en
shell-script. Entonces necesitar� un editor y nada mejor que 'vi'.
En este curso se le da mucha
importancia a la cultura Unix. Para una persona que aprende 'vi'
surgen varias oportunidades para aplicar lo que sabe en comandos
distintos de 'vi'. La forma de trabajar de 'vi' ha tenido mucho
impacto en otros programas. Puede encontrar juegos, hojas de c�lculo
utilidades, etc que usan cosas parecidas a 'vi'. Ya vimos 'sed' que usa
comandos similares a algunos comandos de 'vi' y ahora vamos a ver
a continuaci�n algunas nociones de otro editor ('ed') que es otro buen
ejemplo de lo que estamos comentando.
'ed' versus 'vi'
Ahora vamos a generar un fichero 'ejemplo.txt' con unas pocas lineas
para hacer unas pocas pr�cticas..
Vamos a sacar una copia para comprobar luego los cambios.
Ahora generamos un fichero con las instrucciones para editar el
fichero anterior. Deseamos que primero localice la linea que contiene
'www.ciberdroide.com' y a continuaci�n a�ada una linea (comando 'a')
'(Tienda Virtual de Linux)'. Salimos al modo comandos (comando '.')
Salvamos (comando 'w') y salimos (comando 'q').
Veamos como ha quedado.
Podemos ver las diferencias con el original usando el comando 'diff'.
El comando diff es un comando que sirve para se�alar diferencias entre
dos ficheros pero con la opci�n -e estas diferencias se expresan en una
forma adecuada para ser interpretadas por 'ed'. Veamos como funciona.
Vamos a partir del fichero original y le vamos a pasar por la
entrada est�ndar �nicamente las diferencias obtenidas con 'diff -e'
Vemos que falta las instrucciones 'w' y 'q' para salvar y salir
respectivamente as� que las a�adimos al fichero 'ejemplo.diff'.
Ya tenemos todas las instrucciones necesarias.
Vamos a aplicar los cambios con 'ed'.
En lugar de guardar varias versiones de un gran fichero que sufre
peque�as diferencias de vez en cuando se podr�a guardar una sola versi�n
y unos peque�os ficheros con esas diferencias ocurridas entre una versi�n
y la siguiente. De esta forma podr�an aplicarse secuencialmente para ir
recuperando sucesivamente las versiones anteriores en caso de necesidad.
Cuando se desarrolla una aplicaci�n se van introduciendo sucesivamente
cambios en los programas y para poder recuperar versiones antig�as habr�a
que ir salvando y conservando cada nueva versi�n.
Los programas que se utilizan para el mantenimiento de distintas versiones
de una aplicaci�n suelen basarse en esta idea para ahorrar espacio de
almacenamiento.
'vim' versus 'vi'
Mas adelante veremos que se pueden usar distintas opciones para que el
editor funcione en la forma que nosotros queramos. 'vim' puede ejecutarse
en modo compatible 'vi' (:set compatible) pero es mejor usar el modo no
compatible que nos proporcionar� las agradables ventajas sobre el 'vi'
tradicional que antes comentamos. (:set nocompatible)
Generalmente en Linux se instala 'vim' como sustituto de 'vi'
de forma que aunque usted teclee 'vi' en realidad puede estar ejecutando
'vim' o 'elvis' u otros similares.
Salgamos de dudas:
Solo si le invita a usar la opci�n '-h' h�galo.
Compruebe en las primeras lineas si se trata de 'vim'.
Si ya ha entrado por error en editor salga mediante <ESC> :q<ENTER>
Continuemos averiguando cosas.
Ahora si vamos a entrar y a salir en el editor.
Ya est� dentro del editor. Compruebe si sale informaci�n relativa
al tipo de editor y salga tecleando ':q'
Para significar que estamos en el editor 'vi' pondremos el fondo
azul oscuro y las letras en amarillo son las que salen en pantalla
y en blanco las que introducimos nosotros.
Cuadro resumen para el uso de 'vi'
Hemos agrupado toda esta informaci�n
en un �nico cuadro para que sea su chuleta, para usar y aprender 'vi'.
Solo se incluyen los comandos que suponemos ser�n de la mayor utilidad
para un usuario novato y dado que hay varias formas de hacer una misma
cosa hemos
elegido por usted y hemos clasificado de forma totalmente subjetiva
una serie de comandos para que inicialmente tenga que aprender solo
un reducido n�mero de ellos. Tambi�n se incluyen otros comandos para
que pueda ser usado como un cuadro de consulta bastante completo.
Ser�a conveniente que sacara por la impresora esta informaci�n para
usarla a modo de chuleta en sus primeras pr�cticas con 'vi'.
Existe otra forma de aplicar comandos dentro de un rango de lineas.
Desde el modo de comandos pulsando 'v' se pasa al modo 'vi' o modo
'visual'. Entonces moviendo el cursor marcamos todo el rango de lineas
que queramos tratar y pulsando ':' pasamos al modo 'ex' para aplicar
el comando que queramos.
Cualquier comando que se pueda introducir en 'vi' estando en el modo de
'ex' puede ser incluido en un fichero .exrc en el $HOME que servir�
para que 'vi' ejecute esos comandos cada vez que arranque. Se usa mucho
para definir macros y para activar determinadas opciones con set pero
eso lo veremos en otro cap�tulo.
Practicando lo m�s esencial de 'vi'.
Del modo entrada (Insertar o reemplazar) se sale con <ESC>.
Normalmente trabaj�bamos en '/tmp' como directorio temporal pero
esta vez vamos a crear un directorio nuestro de trabajo para poder
conservar nuestro trabajo el tiempo que queramos. Para ello crearemos un
directorio 'cursolinux' y nos situaremos en �l para trabajar.
Dado que no exist�a ning�n fichero 'ej-vi1.txt' estaremos editando
un fichero nuevo y dependiendo del editor usado (nosotros usaremos
'vim') aparecer� algo del tipo.
Est� en modo comandos y va a teclear sus dos primeros comandos.
Cuando vea '<ENTER>' en los ejemplos significa que debe pulsar
esa tecla.
Acabamos de activar la visualizaci�n del modo de funcionamiento y la
visualizaci�n de los n�meros de l�nea. Ninguna de estas cosas son
necesarias para editar un fichero pero a nosotros nos van a ayudar
a ver m�s claro lo que hacemos.
Ahora pulsaremos la 'i' y aparecer� en la linea inferior el indicador
de que estamos en modo entrada para inserci�n. Desde este modo
introduciremos las siguientes lineas de texto.
Con la tecla <ESC> salimos al modo comandos y con 'ZZ' (may�sculas)
desde el modo comandos salimos salvando el fichero. Ahora vamos a
volver a editarlo.
Volvemos a activar los modos 'showmode' y 'nu' y nos situamos en la
l�nea 3 y la borramos con 'dd' luego nos situamos en la primera l�nea
y hacemos 'p' que copiar� la linea eliminada a continuaci�n de la l�nea
primera. 'dd' guarda siempre en un buffer la informaci�n eliminada para
poder recuperarla con 'p'. Podr�amos haber borrado cinco lineas de golpe
usando '5dd' y las cinco l�neas habr�an sido guardadas en el buffer para
su posible recuperaci�n con 'p'.
Pero ahora la l�nea 2 dice que es la tercera as� que intente usted
mismo borrar una de las l�neas vac�as y situarla como segunda l�nea
usando de nuevo 'dd' y 'p'. Esta vez mueva de linea usando 'j' desde
el modo comandos para bajar a la linea siguiente y 'k' para subir a
la l�nea anterior. Si el teclado est� configurado en su editor para
manejar correctamente las teclas de flechas podr� hacer esto mismo
usando las teclas flecha abajo y flecha arriba en sustituci�n de
la 'j' y la 'k' respectivamente. Si algo sale mal borre el fichero
y vuelva a empezar procurando no volver a meter la pata.
Bueno el caso es que el fichero deber�a quedar con este aspecto.
Vamos a sacar una copia de este fichero modificado con otro nombre,
y luego vamos a duplicar varias veces el contenido de las l�neas
cuatro y cinco usando '2yy' (guarda en el buffer dos lineas) y 'p'
para (copia el contenido del buffer en la l�nea actual).
Asegurese que est� en modo comandos. Pulse <ESC> si no est� seguro
y teclee los comandos siguientes. Advierta que algunos comandos
empiezan por ':' y terminan por <ENTER> mientras que otros no.
Estamos repitiendo varias veces la l�nea 'No parece tan dif�cil de usar.'
Deber�a quedar finalmente con este aspecto.
Como hemos visto con '2yy' hemos metido en el buffer dos lineas en
lugar de una. Para meter una sola linea habr�a bastado usar 'yy'
o '1yy'.
Ahora vamos a salir pero sin guardar ninguno de los cambios realizados.
Primero intentar�amos salir sin m�s con ':q' desde el modo comandos.
Obtendremos un aviso del editor para no perder las �ltimas modificaciones.
Pero realmente deseamos salir sin salvar as� que intentamos de nuevo con
':q!' desde el modo comandos.
Vamos a comprobar que los �ltimos cambios no se han guardado,
y vamos a ver que permisos tiene este fichero.
La informaci�n de permisos puede ser diferente. Recuerde que dijimos
que los permisos de un fichero cuando se crea dependen de la 'umask'
pero ahora solo nos interesa comprobar efectivamente tenemos permisos
para leer y escribir en este fichero. Vamos a eliminar los permisos de
escritura del fichero y vamos a intentar editarlo nuevamente.
Probablemente aparecer� en la linea inferior de su editor una
advertencia de que est� en modo solo lectura.
Bueno a pesar de ello vamos a intentar hacer cambios y como estamos
practicando continuaremos con una serie de comandos que a�n no hemos
visto y que ten�amos clasificados con '***'.
Permiti� escribir otros ficheros pero se niega a sobrescribir el
fichero que estamos editando con los cambios porque est� en modo
solo lectura y sugiere que usemos '!' para forzar su escritura.
En este caso estamos forzando la situaci�n y estamos escribiendo
en un fichero en el que no tenemos permisos pero puesto que somos
propietarios del mismo el editor puede manejar los permisos para
dar permiso de escritura, sobrescribir el fichero y volver a cambiar
los permisos dejando los permisos originales.
Podemos ejecutar comandos desde el editor as� que porque no miramos
los permisos con 'ls -l'.
Debemos pulsar <ENTER> para volver al editor
Puesto que podemos ejecutar cualquier comando tambi�n podemos
ejecutar bash como una subshell. Aprovecharemos para ver los
procesos activos.
Por fin estamos de vuelta en el editor.
Vamos a continuar practicando algunos comandos importantes que
nos quedan.
Con la 'J' may�scula hemos unido dos l�neas en una.
Ahora vamos a pasar al modo entrada para reemplazar.
Desde el modo comandos podemos consultar el nombre del fichero,
cuantas lineas tiene en total, en que l�nea y columna estamos,
y otras cosas con solo pulsar <CTRL+G> .
Ahora utilice varias veces el comando 'u'. Si est� en 'vim'
ver� como se deshacen retrocediendo secuencialmente en las �ltimas
modificaciones que hemos realizado. Luego si est� usando 'vim' use
<CTRL+R> para avanzar de nuevo en las �ltimas modificaciones hasta
recuperarlas todas. Para terminar salga con ':q!'
Practique con la combinaci�n de 'yy' o 'nyy' y 'p'. O con
la combinaci�n 'dd' o 'ndd' y 'p'. Se usan mucho para copiar o
trasladar peque�os bloques de informaci�n.
Para mover una linea hacer 'dd', luego situarse en la posicion destino y
hacer 'p'. Para mover varias lineas hacemos algo parecido. Borramos
primero varias lineas y luego desde la posici�n destino hacemos 'p'. Para
copiar en lugar de mover usar�amos 'yy' en lugar de 'dd'.
Bueno utilice su propia imaginaci�n e investigue y practique por
su cuenta. Esta lecci�n no le obliga a digerir conceptos nuevos
pero si requiere iniciativa para practicar con el editor.
Existe un comando que lo hemos marcado como esencial cuando en
realidad se usa poqu�simo pero es un comando que conviene conocer
porque en el momento m�s inesperado puede ser necesario usarlo.
Con este comando el editor redibuja totalmente el contenido de la
pantalla. Esto puede ser necesario porque a su terminal podr�a
llegarle informaci�n desde otro proceso. Por ejemplo un mensaje
de error del sistema o un aviso de su administrador para que
finalice antes de 10 minutos. Quiz�s su administrador es de los
que repite el mensaje m�s de una vez y a cada mensaje recibido
su pantalla queda totalmente destrozada. No pasa nada. Pulse
<CTRL+L> y todo volver� a la normalidad. Esto puede ocurrirle
cuando este usando otro programa distinto de 'vi' y quiz�s
pueda usar gualmente <CTRL+L>.
Dado que 'vi' est� pensado para su uso interactivo desde un terminal
no resulta muy apropiado de usar en combinaci�n con otros programas
mediante redirecci�n de entrada salida. En el cap�tulo anterior de
expresiones regulares vimos como 'sed' se pod�a usar como filtro
de entrada salida. Existe un editor llamado 'ed' que es capaz de
editar texto en modo no interactivo. Para ello se suele recurrir a
un script que proporcionar� a 'ed' las instrucciones adecuadas.
Somos de la opini�n de que las lecciones que no dejan ver r�pidamente
cual es su utilidad y que no se practican est�n condenadas al olvido.
Por eso queremos evitar que piense en t�rminos de "para que necesito
yo conocer esto de ed". Por eso m�s tarde comentaremos
algo de 'diff' combinado con 'ed'. As� comprender� mejor la utilidad
del editor 'ed'.
$ cd /tmp
$ cat <<FIN > ejemplo.txt
> No olvide visitar nuestra web
> http://www.ciberdroide.com
> y esto es todo.
> FIN
$ cp ejemplo.txt ejemplo.txt.original
$ cat <<FIN > ejemplo.ed
> /www.ciberdroide.com/
> a
> (Tienda Virtual de Linux)
> .
> w
> q
> FIN
$ ed ejemplo.txt < ejemplo.ed
73
http://www.ciberdroide.com
99
$ cat ejemplo.txt
No olvide visitar nuestra web
http://www.ciberdroide.com
(Tienda Virtual de Linux)
y esto es todo.
$ diff -e ejemplo.txt.original ejemplo.txt
2a
(Tienda Virtual de Linux)
.
$ cp ejemplo.txt.original ejemplo2.txt
$ diff -e ejemplo.txt.original ejemplo.txt > ejemplo.diff
$ cat ejemplo.diff
2a
(Tienda Virtual de Linux)
.
$ cat <<FIN >> ejemplo.diff
> w
> q
> FIN
$ cat ejemplo.diff
2a
(Tienda Virtual de Linux)
.
w
q
$ ed ejemplo2.txt < ejemplo.diff
73
y esto es todo.
99
$ cat ejemplo2.txt
No olvide visitar nuestra web
http://www.ciberdroide.com
(Tienda Virtual de Linux)
y esto es todo.
En Linux existe un editor 'vi' muy mejorado que se llama 'vim'. Este
editor es muy similar a 'vi' pero con importantes mejoras. La m�s importante
sin lugar a dudas es la capacidad de deshacer retrocediendo uno a uno en
los �ltimos cambios realizados. Esto permite recuperar aquello
de los destrozos que dijimos antes. Tambi�n permite resaltar la sintaxis de
ciertos ficheros como. shell-script, html, lenguaje C, y otros muchos lenguajes. Este y otros detalles lo hacen muy adecuado para programar. El manejo del
cursor en los distintos modos del editor resulta mucho m�s c�modo y un mont�n
de cosas m�s.
$ vi -? | less
$ vi -h | less
$ whereis vi
$ whereis vim
$ whereis elvis
$ man vi
$ man vim
$ man elvis
$ man ex
$ man view
$ man ed
$ vi
~ VIM - Vi IMproved
~
~ version 5.3
~ by Bram Moolenaar et al.
~
~ Vim is freely distributable
~ type :help uganda<Enter> if you like Vim
~
~ type :q<Enter> to exit
~ type :help<Enter> or <F1> for on-line help
~ type :help version5<Enter> for version info
~
~
:q
A continuaci�n se describen una serie de comandos de uso frecuente en 'vi'.
Se destacan los que se consideran m�s importantes con un mayor numero de
asteriscos. En una primera lectura le recomendamos que empiece a utilizar
y a aprender aquellos comandos marcados con '***' que son los m�s importantes.
Le aconsejamos
que no pase de lecci�n hasta que no se aprenda como m�nimo los comandos
calificados con '***'. Al final del cap�tulo como es costumbre pondremos
un test pero solo haremos preguntas sobre comandos calificados con '***'
que ser�n los que practicaremos de forma especial en este cap�tulo.
*** --> Comando de uso imprescindible.
** --> Comando de uso muy frecuente.
* --> Comando de uso no tan frecuente.
*** vi Editar un nuevo fichero *** vi <fichero> Editar un fichero. (Si el fichero es de solo lectura lo editara en modo solo lectura. * vi <fichero1> <fichero2> <fichero3> ... Editar varios ficheros sucesivamente. ** vi -R <fichero> Editar en modo solo lectura. ** vi -r <fichero> Editar recuperando modificaciones no salvadas.
Se pasa desde el modo entrada (inserci�n o reemplazo) mediante <ESC>.
. ** h Car�cter anterior ** <ENTER> Linea siguiente ** j Linea siguiente ** k Linea anterior ** <ESPACIO> Car�cter siguiente ** l Car�cter siguiente * L Ultima linea de la pantalla * H Primera linea de la pantalla * M Linea central de la pantalla * <CTRL+B> Retroceso de p�gina * <CTRL+F> Avance p�gina * + Primer car�cter de la linea siguiente * - Primer car�cter de la linea anterior * $ Desplazarse al final de linea. * 0 Desplazarse al principio de linea. . *** i Pasar a modo entrada insertando. *** R Pasar a modo entrada reemplazando. ** a Avanzar el cursor y pasar a modo entrada insertando. *** o Insertar una linea despu�s de la actual y pasar a insertar. * O Insertar una linea antes de la actual y pasar a insertar. . *** u Deshacer �ltima modificaci�n. (En vim se pueden ir deshaciendo los
los �ltimos cambios en otros editores vi solo se deshace el �ltimo cambio).*** <CTRL+R> En 'vim' sirve para deshacer el �ltimo comando 'u' ** U Recuperar linea completa. . ** / Busca una cadena de caracteres, hacia delante. * ? Busca una cadena de caracteres, hacia atr�s. * n Siguiente en la b�squeda. * N Anterior en la b�squeda. . *** dd Borrar una linea. *** <n>dd borrar <n> lineas. *** yy Meter una linea en el buffer. *** <n>yy Meter <n> lineas en el buffer. *** p Copiar la linea del buffer despu�s de la l�nea actual. * P Copiar la linea del buffer antes de la l�nea actual. . *** <CTRL+L> Refrescar pantalla. (�til cuando se descompone la pantalla) ** <CTRL+G> Visualiza el nombre del fichero, numero de lineas totales y en que linea estamos. *** J Une la l�nea actual con la siguiente. ** . Repetir �ltimo comando. *** : Pasar al modo ex (Modo comandos) *** ZZ Terminar salvando si hubo cambios.
Se pasa desde el modo de comandos al modo ex con ':'
Se puede forzar a entrar directamente en este modo
usando la opci�n '-e' o ejecutando el comando 'ex'.
** :<#linea> Ir a una linea.
* :e <fichero> Pasa a editar de forma simultanea otro fichero.
* :e # Volver al fichero anterior.
*** :w Salvar. (No puede sobreescribir si se entr� con vi -R)
*** :w! Salvar forzando (Cuando falla :w).
** :x Salir salvando si es necesario.
*** :w <fichero> Salvar con otro nombre. (No puede existir el fichero)
*** :w! <fichero Salvar con otro nombre forzando.(Permite sobreescribir)
*** :r <fichero> Lee un fichero y lo carga en el lugar indicado por la posici�n actual del cursor.
** :r !<comando
Ejecuta en una subshell el comando y guarda el resultado
del mismo en la posici�n indicada por el cursor.
*** :q Salir si no hay modificaci�n.
*** :q! Salir sin salvar cambios.
** :wq Salir salvando cambios.
* :sh Ejecutar una subshell (se retorna con exit).
* :g/<s1>/p Visualizar lineas que tienen <s1>
* :g/<s1>/s//<s2>/g Sustituir globalmente <s1> por <s2>.
* :g/<s1>/s//<s2>/gc �dem pero pidiendo confirmaci�n.
* :n Siguiente documento.
* :args Mirar ficheros a editar.
* :ab m n Abreviaturas. Teclear 1 se sustituye por 2
* :unab m Desabreviar.
* :map m n Crear macro (m hace n) (Ver ejemplos con macros)
* :map! m n Crear macro en modo inserci�n (m hace n)
* :unmap m Destruir macro m
* :unmap! m Destruir macro de inserci�n m.
* :cd Cambiar de directorio actual.
** :set nu Activar visualizaci�n de n�meros de l�nea
** :set nonu Activar visualizaci�n de n�meros de l�nea
** :set all Ver todas las opciones con sus valores.
** :set nocompatible Opci�n de 'vim' para no obligar a ser compatible 'vi'
*** :set showmode Para visualizar siempre el modo en que nos encontramos.
*** :!<comando> Ejecutar un comando en una subshell.(Ver ejemplos con !)
pueden aplicarse dentro de un
rango de l�neas especificado.
Un n�mero de l�nea (#linea) puede venir como:
Un punto . L�nea actual Un punto .-N N L�neas antes de la actual Un punto .+N N L�neas despu�s de la actual Un n�mero N L�nea N Un $ $ Ultima l�nea. Un $ % Desde la �ltima a la primera l�nea (Abreviatura de 1,$). *** :#linea1, #linea2 w <fichero> Salvar desde 1 hasta la 2 en <fichero>
** :#linea1, #linea2 co #linea3 Copiar desde 1 hasta 2 en 3.
** :#linea1, #linea2 mo #linea3 Mover desde 1 hasta 2 en 3.
** :#linea1, #linea2 de Borrar desde 1 hasta 2.
** :#linea1, #linea2 s/<s1>/<s2> Sustituir la primera ocurrencia en cada linea desde 1 hasta la 2 la cadena <s1>
por la cadena <s2>
** :#linea1, #linea2 s/<s1>/<s2>/c Sustituir la primera ocurrencia en cada linea desde 1 hasta la 2 la cadena <s1>
por la cadena <s2> con confirmaci�n.
** :#linea1, #linea2 s/<s1>/<s2>/g Sustituir todas las ocurrencias en cada linea desde 1 hasta la 2 la cadena <s1>
por la cadena <s2>
** :#linea1, #linea2 s/<s1>/<s2>/gc Sustituir todas las ocurrencias en cada linea desde 1 hasta la 2 la cadena <s1>
por la cadena <s2> con confirmaci�n
Si no se usa ninguna opci�n inicial vi empezar� en modo comandos.
Para pasar al modo entrada hay varias formas pero recomendamos
que se aprenda de momento solo. i, a, o, R. Ya hemos descrito
estas funciones en 'chuleta-vi.txt' y practicaremos con ellas
m�s adelante.
$ cd
$ mkdir cursolinux
$ cd cursolinux
$ vi ej-vi1.txt
~
~
~
"ej-vi1.txt" [New File]
:set showmode<ENTER>
:set nu<ENTER>
1 Estamos practicando con el editor vi.<ENTER>
2 No parece tan dif�cil de usar.<ENTER>
3 Ya voy por la tercera linea y no ha ocurrido nada grave.<ENTER>
4 <ENTER>
5 <ENTER>
6 Como he saltado un par de l�neas voy por la linea seis.<ENTER>
7 De momento no escribo nada m�s.<ESC>
ZZ
$ vi ej-vi1.txt
:set showmode<ENTER>
:set nu<ENTER>
:3<ENTER>
dd
:1<ENTER>
p
1 Estamos practicando con el editor vi.
2
3 Ya voy por la tercera linea y no ha ocurrido nada grave.
4 No parece tan dif�cil de usar.
5
6 Como he saltado un par de l�neas voy por la linea seis.
7 De momento no escribo nada m�s.
:w ej-vi2.txt
:4<ENTER>
2yy
:3<ENTER>
p
:3<ENTER>
p
:3<ENTER>
p
1 Estamos practicando con el editor vi.
2
3 Ya voy por la tercera linea y no ha ocurrido nada grave.
4 No parece tan dif�cil de usar.
5
6 No parece tan dif�cil de usar.
7
8 No parece tan dif�cil de usar.
9
10 No parece tan dif�cil de usar.
11
12 Como he saltado un par de l�neas voy por la linea seis.
13 De momento no escribo nada m�s.
:q
No write since last change (use ! to override)
:q!
$ cat ej-vi1.txt
Estamos practicando con el editor vi.
No parece tan dif�cil de usar.
Ya voy por la tercera linea y no ha ocurrido nada grave.
Como he saltado un par de l�neas voy por la linea seis.
De momento no escribo nada m�s.
$ ls -l ej-vi1.txt
-rw-r--r-- 1 xxxx xxxx 216 ago 12 18:224 ej-vi1.txt
$ chmod 444 ej-vi1.txt
$ ls -l ej-vi1.txt
-r--r--r-- 1 xxxx xxxx 216 ago 12 18:224 ej-vi1.txt
$ vi ej-vi1.txt
"ej-vi1.txt" [readonly] 7 lines, 216 characters
:3
:.,$ w trozofinal
:1,. w trozoinicial
:1,$ de
:r trozoinicial
:$
:r !date
:$
:r trozofinal
:w tempfich
:w
'readonly' option is set (use ! to override)
:w!
:!ls -l
total 6
-r--r--r-- 1 xxxx xxxx 304 ago 12 119:11 ej-vi1.txt
-r--r--r-- 1 xxxx xxxx 304 ago 12 119:11 ej-vi1.txt~
-rw-r--r-- 1 xxxx xxxx 216 ago 12 118:28 ej-vi2.txt
-rw-r--r-- 1 xxxx xxxx 304 ago 12 119:09 tempfich
-rw-r--r-- 1 xxxx xxxx 147 ago 12 119:06 trozofinal
-rw-r--r-- 1 xxxx xxxx 126 ago 12 119:06 trozoinicial
Press RETURN or enter command to continue
:!bash
bash-2.01$ ps
PID TTY STAT TIME COMMAND
221 2 S 0:00 -bash
893 2 S 0:00 vi ej-vi1.txt
944 2 S 0:00 bash
951 2 R 0:00 ps
bash-2.01$ exit
exit
1 returned
Press RETURN or enter command to continue
:3<ENTER>
o
Hemos pasado a insertar abriendo una linea.<ESC>
J
:3<ENTER>
R
XXXXXXXXXXXXXXXXX<ESC>
sertar abriendo una linea. Ya voy por la tercera linea y no ha ocurrido nada grave.
<ESC>
<CTRL+G>
"ej-vi1.txt" [Modified][readonly] line 4 of 10 --40%-- col 44