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.
: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.
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.
(C)opyright, Antonio Valle, 1996. Todos los Derechos Reservados.