Hay varias formas, pero la más simple es:
Donde [rango] especifica el rango de líneas donde queremos realizar la búsqueda, incluyendo números y los símbolos $, que indica el final del fichero, . que indica la situación actual del cursor , % que indica el fichero actual o bien dos números separados por comas. También podemos especificar un desplazamiento respecto a la situación actual con +n, donde n especifica el número de líneas que queremos desplazarnos. Ejemplos de rangos válidos serían:
Por ejemplo,
El comando :!cmd ejecutarña el comando externo cmd. También podremos utilizar :sh para ejecutar una shell. Desde
dentro de esta shell podremos volver a correr el vi si es necesario, pero
entraremos en otra sesión de vi. Esto es particularmente
útil si estamos editando un Makefile y diferentes ficheros de
configuración cuando intentamos compilar un programa. La ventaja con
respecto a :e es que no es necesario grabar lo que estamos haciendo,
y ademas el fichero estará allí donde lo dejamos al salir de
la shell que hemos abierto. De todas formas, no deja de ser altamente
recomendable grabar antes de abrir la nueva shell... nunca se sabe!
Deberías recibir un mail acerca del problema. Es decir, el vi
tendría que enviarte un mail comunicándote el problema y
diciendo cómo solucionarlo. De todas formas, podrás recuperar una
copia de lo que estabas haciendo ejecutando vi -r <fichero>,
donde <fichero> es el fichero que estabas editando cuando el ordenador
se fué al garete. La orden vi -r te dará una lista de
todos los ficheros que se pueden recuperar (si estabas editando más de
uno en el momento del fallo).
Puedes usar << y >> para desplazar una
línea a la izquierda o a la derecha. Además podrñas
utilizar <% para desplazar una {, ( o [ hacia la izquierda o a la
derecha (con >%). Para poder hacer esto, debes estar situado sobre
el símbolo en cuestión.
:map <lhs> <rhs> donde <lhs> tendrá
como máximo 10 caracteres y <rhs> tendrá como máximo
hasta 100.
Con esto conseguiremos que cada vez que escribamos <lhs> a se
remplazará con <rhs>. Todas las macros han de comenzar
en modo comando, pero pueden terminar en cualquier modo que deseemos. Ah!
y no olvides utilizar el control ^V antes de utilizar cualquier
código de control.
:unmap <lhs> borra la macro..
:map! <lhs> <rhs> hará que al escribir <lhs> dentro del documento (en modo inserción), se traduzca por <rhs>
If <lhs> is #n where n is 0-9, it will be mapped to the appropriate
function key.
Por Supuesto!. Esto es vi, chaval! puede hacer cualquier cosa. Aquí tienes una macro para poder hacerlo. Si realmente la
vas a utilizar, deberías ponerla en el fichero .exrc. Es
bastante simple: ejecuta el comando ispell sobre el fichero actual,
pero por supuesto, debes tener el ispell instalado en tu sistema.
(Lo puedes encontrar aquí).
Para utilizarlo, sólo hay utilizar la V en modo comando.(El vi no
utiliza la V, así que es correcto realizar este mapeo).
El segundo código ^M hace que no sea necesario pulsar retorno
después de que se haya ejecutado el ispell para volver al
vi.
En fin... No era de esperar que en las puertas del 2000 alguien preguntara
esto (incluso el traductor no tiene ni idea de como traducir el nombre de este
cacharro. Si alguien lo sabe, por favor, que avise!).
De todas formas, la cuestión tiene solución, y además
resuelve otras dudas, así que allá vamos:
El vi arrancará en un modo específico llamado "open mode".
En general, todo funcionará más o menos igual, pero será
bastante incómodo de trabajar. Los caracteres borrados aparecerán como "back slash" (\). El vi actuará como si el tamaño de la
ventana fuese de sólo una línea. Con ^r volveremos a
escribir la línea en curso y z refresca la ventana alrededor
de la línea actual.
:-) Lo que ocurre es que el editor no sabe con qué tipo
de terminal se las tiene que ver, así que decide que en esta
situación lo mejor que puede hacer es suponer que tienes la peor
terminal posible. Podría parecer bastante inútil, pero
hay que tener en cuenta que en este modo, el vi casi no necesita saber
nada acerca de tu terminal para poder trabajar.
Ahora vamos a ver cómo arreglárnoslas con esto. Sería
posible cambiar la configuración para la sesión en curso, pero
sería bastante poco práctico, ya que tendríamos que volver
a realizar todos los cambios al iniciar otra sesión. Si sabes qué
tipo de terminal tienes, puedes configurarlo desde el prompt del sistema,
actualizando el valor de la variable TERM (con setenv TERM <termtype>
si utilizas la C-shell o sus derivados o con TERM=<termtype> ;
export TERM si utilizas Bourne-Shell o derivados)
Lo mejor que podrías hacer sería editar tu fichero
.profile o .chsrc para que la variable TERM se configura
automáticamente al iniciar una sesión. (Por supuesto, necesitarás conocer el ed o configurar la variable *antes* de editar el
fichero para que el vi te funcione correctamente!).
Si no sabes qué tipo de terminal tienes, prueba con vt100.
La mayoría de los terminales y emuladores actuales pueden emular
correctamente el terminal vt100. Si no te funciona, busca alguien
que te pueda ayudar a determinar el valor correcto de la variable.
( En HP-UX existe un comando /usr/bin/ttytype que te puede ayudar
a identificar el tipo de terminal).
(C)opyright, E. Larry Lidz, 1994, 1995. All Rights Reserved.
3.1 - Cómo se ejecuta un programa desde dentro del vi?
3.2 - Socorro! Estaba escribiendo un documento y el ordenador "se'scoñó!
3.3 - Algún truco para hacerle la vida más fácil
a los programadores?
3.4 - Cómo escribir macros?
3.5 - Cómo asigno una macro a una tecla de función?
3.6 - Se puede abreviar texto?
:ab email avalle@abast.es hará que cada vez que se escriba
la palabra email el vi la traduzca por avalle@abast.es
:una email elimina esta conversión.
3.7 - Cómo puedo realizar una corrección ortográfica del documento?
3.8 - He conseguido un "hardcopy terminal", lo puedo usar con el vi?
3.9 - Ah, bueno...Así que eso es el open mode? Yo no tengo un
"hardcopy terminal", y aún me arranca en "open mode"
[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.