Manual del editor de textos Vi
Página 1 de 1.
Manual del editor de textos Vi
.Como requisito para saber lidiar bien con un sistema basado en Unix, es saber ocupar este editor de texto. En este post, no es para iniciar un flameware con algún otro editor de texto, sino saber ocupar un editor de texto que se encuentra prácticamente en todos los sistemas operativos basados en Unix.
- Funcionamiento General:
Al invocar este editor aparece en el monitor la pantalla de edición. En ella aparece la posición del cursor resaltada, las líneas en blanco señaladas con el carácter ~ y en la parte inferior de la pantalla aparece la línea de estado, que muestra el nombre del fichero y el número de caracteres que contiene.
Si se invoca el vi pasándole como parámetro el nombre de un fichero en la pantalla de edición aparecerá su contenido. Cuando se invoca este editor con el nombre de un fichero que no existe, se crea automáticamente.
Existen dos modos de operación en el vi :
Modo Edición:
Para añadir texto al fichero
Modo Comando:
Para introducir órdenes que realizan funciones específicas del vi .
Cuando se edita un fichero con el vi , los cambios no se hacen directamente sobre el fichero. En realidad, se aplican a una copia del fichero que el vi crea en un espacio de memoria temporal llamado buffer. La copia en disco del fichero se modifica sólo cuando se graban los contenidos del buffer.
Esto tiene sus ventajas y sus inconvenientes. Por un lado, significa que se puede salir de la edición de un fichero y descartar todos los cambios hechos durante una sesión, dejando la copia de disco intacta. Por otro lado, se podría perder el contenido no grabado del buffer de trabajo si el sistema cae.
Lo más aconsejable es grabar el trabajo frecuentemente, especialmente cuando se hacen cambios importantes. Para grabar el fichero que se está editando sin salir del vi , basta pulsar en modo comando la orden :w
Para terminar la sesión caben varias posibilidades, siempre en modo comando:
:q
Salir cuando no se han hecho modificaciones
:q!
Salir y descartar los cambios
:wq
Salir y guardar los cambios
IMPORTANTE: Hay que procurar no editar un fichero con varias copias del vi al mismo tiempo, pues de este modo no se está seguro de cúal es la copia que está realmente grabada en disco.
Modo Edición:
Cuando se arranca el vi , siempre está en modo comando, por lo que antes de poder escribir texto en el fichero se debe teclear uno de los comandos de entrada del vi , tales como i (insert), para insertar texto en la posición actual del cursor, o a (append) para insertar texto después de la posición actual del cursor.
Para regresar la modo comando, basta con presionar Esc. Si en un momento determinado no se sabe en qué modo se está, simplemente pulsando Esc se asegura uno de que está en modo comando, y se podrá continuar con el trabajo.
Modo Comando:
Cuando se abre un fichero con vi , se está en modo comando. En este modo se pueden introducir comandos que implementan un amplio rango de funciones. Muchos de estos comandos constan de una o dos letras y un número opcional relacionado con distintas funciones.
Muchos comandos no requieren pulsar Return para que se ejecuten, pero todas las órdenes que empiezan por dos puntos ( : ) requieren pulsar Return para que se ejecuten.
- Principales Comandos:
Los comandos del vi pueden ir precedidos de un contador que indica cuantas veces se debe repetir la operacion.
Por ejemplo 3dd borra 3 líneas, 2dw borra 2 palabras, y 4x borra 4 caracteres.
Tambien se pueden usar contadore para los comandos de moverse por la pantalla, por ejemplo 3w o 2Ctrl-F Pulsando un "." se repite la última operacion realizada.
Por ejemplo, si se borra una lía y la siguiente operación es borrar una linea, basta con pulsar ".".
NOTA: Muchos de los comandos delvi son case-sensitive, es decir, la misma orden tecleada en mayúsculas o minúsculas puede tener efectos totalmente distintos.
- Moverse por un fichero:
Cuando arrancamos el vi , el cursor esta en la esquina superior izquierda de la pantalla. En modo comando, existen órdenes que nos permiten moverlo por toda la pantalla.
De carácter en carácter
Si el teclado esta provisto con las flechas, se pueden utilizar para mover el cursor libremente por el texto editado hasta el momento.
Si se usa el vi desde un terminal remoto, las flechas pueden no funcionar correctamente, depende del emulador de terminal. En dicho caso las teclas usadas son:
Izquierda:
h ó SpcBar
Derecha:
l ó BckSpc
Arriba:
k
Abajo:
j
De palabra en palabra
Pulsando w (word) nos movemos una palabra hacia la derecha.
Pulsando b (before) nos movemos una palabra hacia la izquierda.
Dentro de una línea
Pulsando ^ nos movemos al comienzo de la línea en la que está el cursor.
Pulsando $ nos movemos al final de la línea actual.
Pulsando Return nos movemos al comienzo de la línea siguiente.
Dentro de una pantalla
Pulsando H (high) nos movemos a la parte superior de la pantalla.
Pulsando L (low) nos movemos a la parte inferior de la pantalla.
Pulsando M (middle) nos movemos a la mitad de la pantalla
Av/Re Página
Pulsando Ctrl-F (forward) se avanza una pantalla, moviéndose el cursor a la esquina superior izquierda de la nueva pantalla.
Pulsando Ctrl-D se avanza media pantalla.
Pulsando Ctrl-B (scroll backward) se retrocede una pantalla.
Pulsando Ctrl-U se retrocede media pantalla.
- Cambiar Texto:
Cambiar texto implica sustituir una sección de texto por otra. vi tiene varios modos de hacer esto, dependiendo de lo que se desee cambiar.
Carácter por Caracter/es:
Substituir caracteres
Para substituir el carácter bajo el cursor por uno o mas caracteres, teclear s seguido del nuevo texto y pulsar Esc cuando se acabe.
Reemplazar un carácter
Para reemplazar el carácter bajo el cursor por otro carácter, pulsar r, seguido por un unico carácter, pues al pulsar una tecla el vi inmediatamente regresa a modo comando
Trasposicionar caracteres
Esto es util para fallos tales como escribir qeu en lugar de que. Colocando el cursor sobre la primera letra a mover y pulsando xp, se intercambian las posiciones de ambos caracteres.
Palabra por palabra/s
Palabra completa
Posicionar el cursor al principio de la palabra a ser reemplazada, teclear cw seguido de la nueva palabra. Cuando se termine de modificar se pulsará Esc
Parte de una palabra
Colocar el cursor sobre la palabra, a la derecha de la parte a cambiar, y proceder como en el caso anterior.
Línea por línea/s
Línea completa
Poner el cursor en cualquier parte de la línea y teclear cc. La línea desaparece, dejando una línea en blanco para el nuevo texto, que puede ser de cualquier longitud. Para terminar se pulsará Esc.
Parte de una línea
Colocar el cursor a la derecha de la parte a modificar. Pulsar C, introducir la corrección y pulsar Esc para terminar.
Partir/Unir líneas
Partir una línea
Mover el cursor al espacio donde se quiere partir la línea y teclear r (replace) seguido de Return (se reemplazaria el espacio por un return sin afectar al texto)
Unir dos líneas
Colocar el cursor en la línea superior y teclear J.
- Deshacer Cambios:
vi proporciona dos modos para deshacer los cambios hechos mientras no se ha grabado el fichero a disco.
Deshacer el comando previo.
Pulsando u a continuación del último comando, se deshacen los cambios producidos por la ejecución del mismo.
Deshacer los cambios de una linea.
Pulsando U se deshacen todos los cambios que se han hecho sobre una línea. Este comando funciona sólo si se permanece en dicha línea.
- Borrar Texto:
- Caracteres
Para borrar un carácter, posicionar el cursor sobre el carácter a borrar y teclear x. El comando x tambien borra el espacio ocupado por el carácter.
Para borrar el carácter anterior a la posicion del cursor pulsar X.
Palabras
Para borrar una palabra, posicionar el cursor al principio de la palabra y pulsar dw, entonces se borrara la palabra y el espacio que ésta ocupaba.
Para borrar parte de una palabra, hay que colocar el cursor a la derecha de la parte a modificar, y teclear dw.
Lineas
Para borrar una línea y el espacio que ésta ocupa, basta con pulsar dd.
Para borrar todo lo que este a la derecha del cursor, basta con pulsar D.
Para borrar todo lo que este a la izquierda del mismo basta con pulsar d0.
Fichero
Para borrar desde la línea actual hasta el final del fichero, basta con teclear dG.
Para borrar desde el principio del fichero hasta la línea actual, basta teclear d1G.
- Copiar y mover texto:
- De la misma manera que muchos procesadores de texto permiten copiar/pegar, o cortar/pegar líneas de texto, el vi incluye también esta posibilidad, mediante los comandos yank /put y delete /put , respectivamente.
Copiar y pegar
El procedimiento para copiar una ó más líneas, es el siguiente:
Colocarse en la primera línea a copiar.
Escribir el número de líneas que se desea copiar.
Teclear yy ó Y (comando yank ).
Colocarse en la línea a donde se desean copiar
Teclear p ó P (comando pegar )
Cortar y pegar
El procedimiento para mover una ó varias líneas es el siguiente:
Colocarse en la primera línea a cortar.
Escribir el número de líneas que se desea cortar.
Teclear dd (comando delete ).
Colocarse en la línea a donde se desean pegar
Teclear p ó P (comando pegar )
Usar buffers con nombre
Para insertar repetidamente un grupo de líneas en varios lugares dentro de un documento, se pueden copiar las líneas a un buffer con nombre. El procedimiento para dar nombre a un buffer es el siguiente:
Colocarse en la primera línea a copiar.
Teclear comillas dobles ( " ) seguido de la letra con que se desea nombrar el buffer (Ej: "a )
A continuación escribir el número de líneas que se desea copiar o cortar.
Teclear yy ó Y (comando yank ) ó dd (comando delete ).
Colocarse en la línea donde se desean pegar.
Teclear comillas dobles seguidas por la letra del buffer cuyo contenido se desea insertar y por p ó P (comando pegar ).
AVISO:Entre la ejecución de un yank ó delete y un put , sólo se pueden usar los comandos de movimiento de cursor. Si se borrase o copiase cualquier otro texto antes de poner el nuevo texto en su lugar, las líneas copiadas o borradas se perderían.
Si se necesita copiar o mover varios conjuntos de líneas distintos, se deben usar los buffers con nombre, que sólo se mantienen mientras no se salga del vi, o se le asigne explícitamente un nuevo contenido
- Comandos del ex:
- Cuando se trata de grandes bloques de texto, los comandos del ex son más seguros que yank , delete y put del vi.
Éstes permiten especificar el rango de líneas a mover o copiar, así como la línea anterior al punto donde se insertarán las líneas.
Para conocer el rango de líneas, es necesario conocer el número de cada línea:
Para visualizar los números de línea
:set nu
Para ocultar los números de línea
:set nonu
Conocidos los números de las líneas que se van a copiar, las órdenes del editor ex disponibles son:
Copiar líneas
El formato básico del comando para copiar en el ex es el siguiente:
:#linea,#linea co #linea
Mover líneas
El formato básico del comando para mover en el ex es el siguiente:
:#linea,#linea m #linea
Borrar líneas
El formato básico del comando para borrar en el ex es el siguiente:
:#linea,#linea d
En todos los casos, los dos primeros números de línea especifican el rango de líneas a copiar , cortar o borrar, respectivamente, y el último corresponde a la línea anterior al punto de inserción.
Se pueden utilizar abreviaturas para especificar los rangos de líneas:
.
Denota la línea actual
$
Denota el final del fichero
- Buscar y reemplazar:
- vi proporciona varios modos de encontrar un string de caracteres en el texto, así como de reemplazarlo.
Un string es simplemente uno o más caracteres en fila. Puede incluir letras, números, signos de puntuación, caracteres especiales, espacios en blanco, tabulaciones o retornos de carro. Un string puede ser una palabra gramatical o puede ser una parte de una palabra.
Para ir a una línea determinada de un fichero abierto se teclearía:
#lineaG (Ej. 6G)
Si no se indica un número de línea se consideraría la última del fichero.
Búsqueda
Para encontrar un string, hay que escribir una barra hacia la derecha (/) seguida por el string que se desea buscar, y pulsar return.
El vi posiciona el cursor en la siguiente ocurrencia del string. Tecleando n se va a la siguiente ocurrencia del string, y pulsando N a la anterior.
Si en lugar de una barra se escribiese una interrogación (?), la búsqueda sería hacia atrás, y las direcciones de las órdenes n y N se invertirían.
Normalmente las búsquedas son case-sensitive. Si se quiere que vi ignore mayúsculas y minúsculas durante la búsqueda, hay que teclear previamente:
:set ic
Para volver al cambio por defecto se teclearía:
:set noic
Ciertos caracteres especiales (/ & ! . ^ * $ \ ?) tienen un significado particular en el proceso de búsqueda, y por lo tanto deben especificarse de un modo especial cuando están incluidos en el string a buscar, precediéndolos por la barra hacia atrás (\).
Refinando la búsqueda
Se pueden realizar búsquedas más precisas, marcando el string con indicadores de características tales como:
Principio de línea
Para intentar emparejar el comienzo de una línea, hay que escribir antes del string a buscar el carácter ^
Fin de línea
Para emparejar el final de una línea, hay que terminar el string a buscar por el carácter $
Principio de palabra
Para emparejar el principio de una palabra, hay que teclear \<
Fin de palabra
Para emparejar el final de una palabra, hay que teclear \> al final del string.
Comodines
Para emparejar cualquier carácter, hay que teclear un punto en el string en la posición a emparejar. (igual que ? en los nombres de ficheros de MS-DOS)
Para buscar caracteres alternativos en un string, se deben poner las alternativas entre corchetes, por ejemplo:
[md]xxx encontraría los strings mxxx y dxxx
[d-m]xxx encontraría todos los strings que comiencen por cualquier letra de la d a la m y sigan con xxx.
Para emparejar cero ó más ocurrencias del último carácter escrito, basta añadir un * en el string.
Reemplazo
El procedimiento para reemplazar un string está es similar al de búsqueda arriba mencionado. Todos los caracteres especiales de emparejamiento se pueden usar también en una búsqueda+reemplazamiento.
La forma básica de la orden es:
:g/string_buscado/s//string_cambiado/g
Se puede modificar el comando para parar la búsqueda y hacer que el vi pida confirmación antes de realizar el reemplazo, mediante la orden gc (consult), respondiendo y (sí) o n (no).
Para terminar el proceso bastaría con pulsar Ctrl-C
- Insertar un fichero en otro:
- vi permite insertar un fichero dentro del que se está editando, mediante la orden:
:#linea r nombre_fichero
Si no se especifica un número de línea, se tomará la posición actual del cursor
- Edición de múltiples ficheros:
- vi permite la edición de varios ficheros simultáneamente. Para ello se debe grabar el fichero abierto (comando :w), y a continuación escribir
:n nombre_nuevo_fich.
Para cambiarse de un fichero a otro habría que teclear
:n nombrefich
Para editar una serie de ficheros caben dos posibilidades:
Dar el nombre completo de todos los ficheros a editar:
vi nombre1 nombre2 nombre3
Utilizar caracteres comodín
vi nom*
Para copiar líneas de un fichero a otro, se deben seguir los siguientes pasos:
Editar el primer fichero
Salvar las líneas que se quieran con la orden yank.
Sin salir del vi, editar el fichero donde se van a insertar las líneas.
:n nuevofich
Usar la orden put como si se tratase del mismo fichero.
- Recuperación ante caídas del sistema:
- Si el sistema cae, el contenido del buffer donde se realizan las modificaciones se puede perder.
Se puede recuperar parte del trabajo realizado si se invoca el vi del siguiente modo:
vi -r nomfich
donde nomfich es el fichero que se estaba editando en el momento en que se produjo la caída.
Cuando el sistema arranque de nuevo, enviará un mensaje indicando la recuperación del fichero.
Maledictum Sanguine- Admininistrador
- Mensajes : 624
Fecha de inscripción : 27/04/2010
Temas similares
» Combinaciones de teclado del editor de textos nano
» Editor de fotos Online
» Abiword - Procesador de Textos Ligero
» Editor de fotos Online
» Abiword - Procesador de Textos Ligero
Página 1 de 1.
Permisos de este foro:
No puedes responder a temas en este foro.
Sáb Sep 21, 2013 11:53 pm por Kreator
» Torture - Turture (Demo 96)
Miér Mar 27, 2013 10:14 am por Lord_Azazel
» Revolver Apache
Lun Feb 04, 2013 6:41 pm por siosire
» Luciferismo
Dom Feb 03, 2013 9:14 pm por Je_suis_
» Grave - Discography (320 Kbps)
Lun Ene 21, 2013 10:22 pm por Javier M.
» Informaciones
Jue Ene 17, 2013 4:11 pm por ivineytor
» "Celtic" Metal (Copilacion)
Dom Ene 06, 2013 9:05 am por JUGLARMETAL
» Wintersun - 2004 - Wintersun + Demo: Winter Madness
Mar Nov 20, 2012 7:50 pm por omarthv
» ¿Quien podría pasarme los libros de Mafalda?
Mar Sep 11, 2012 8:02 am por zebaz13
» Folk Metal Finlandes (Copilacion)
Lun Ago 27, 2012 1:00 am por ivineytor
» Folk Metal
Lun Ago 27, 2012 12:33 am por ivineytor
» Beowulf - Anonimo
Jue Mar 08, 2012 2:14 am por fe25
» Paul Wardingham - Instrumental
Mar Ene 03, 2012 2:35 am por Maledictum Sanguine
» Fosiles Vivientes
Mar Ene 03, 2012 2:24 am por Maledictum Sanguine
» Juagos simples para computadoras mierderas
Sáb Dic 31, 2011 8:45 am por Fenriz
» 1421 el año que China "descubrio" America
Sáb Dic 31, 2011 8:41 am por Fenriz
» Johann Sebastian Bach - The Art of Fugue
Sáb Dic 31, 2011 8:29 am por Fenriz
» Cuando el enemigo tiene gonorrea y sífilis
Sáb Dic 31, 2011 8:27 am por Fenriz
» El síndrome de la dama y el vagabundo
Sáb Dic 31, 2011 8:23 am por Fenriz
» Hegel
Miér Nov 16, 2011 3:34 pm por Maledictum Sanguine