VI es un editor de textos que ya estaba en los tiempos de UNIX, disponible en GNU/Linux, y que odié muchísimo cuando lo estudié, pero que no podría vivir sin él ahora mismo. Es la manera más rápida de editar un fichero. Muy útil para los ficheros de configuración de nuestro sistema, los típicos INSTALL de los tar.gz, los MakeFiles, etc..
Si se reinicia la máquina accidentalmente cuando tenemos un fichero abierto con el vi el sistema crea un fichero ficheroabiertot.swp. Al abrirlo vi (default.swp) nos dice si queremos recuperarlo y editarlo
Si algo se puede decir de VI es que no es un típico editor. Olvídate del ratón, de seleccionar con SHIFT + Flechas o del Control + C / Control + V y abre la mente a la tecla ESC.
En VI la tecla ESC es de suma importancia ya que es la tecla que presionaremos casi siempre antes de realizar una acción como puede ser copiar, empezar a escribir o ir al final de línea, etc..
Abrir/Crear un fichero: vi fichero (Si el fichero no existe y lo guardamos este se creará).
Descripción | Comando |
---|---|
habilita las distintas sintaxis | syn on |
pone el vi con la sintaxis del apache | set sintax=apache |
Dividir en dos la pantalla pero en una de ellas pone un fichero en blanco | new |
divide la pantalla en dos con el mismo fichero en las dos partes | split |
Visualizar los números de las líneas | :set nu |
Ocultar los números de las líneas | :set nonu |
Ir a la línea siguiente | + |
Ir a la línea anterior | - |
Ir a la línea que esta 8 puestos más abajo | :+8 |
Ir a la línea que esta 9 puestos más arriba | :-9 |
Ir a la línea numero 6 | :6 |
Marcar la línea del cursor con la etiqueta 'a'.(Sólo puede usarse una letra) | ma |
Ir a la línea marcada con 'a“. | 'a |
Ir a la última línea del fichero, “$”. | :$ |
Borrar las líneas entre P y U, ambas incluidas.P y U son identificadores de líneas, es decir, números de lineas o etiquetas. Ejemplos: :6,'a d borrar las lineas entre la "6" y la 'a' :'a,'b d borrar las lineas entre la 'a' y la "b" :'a,$ d borrar las lineas desde 'a' hasta el final | :P,U d |
Escribir en el fichero “Fichero” las lineas comprendidas entre P y U, ambas incluidas | :P,U w Fichero |
Leer el contenido del fichero “Fichero” y ponerlo a continuacion de la linea del cursor. | :r Fichero |
Buscar, hacia adelante, la aparicion de “texto”. | /texto/ |
Buscarlo hacia atras. | ?texto? |
Continuar la busqueda en la direccion elegida. | n |
Continuar la busqueda en la direccion opuesta. /i.ad/ busca iXad, donde X es cualquier caracter /i...ad/ busca iXXad, donde XX son dos caracteres cualesquiera | N |
Substituir texto desde las lineas P a U; solo la :P,U s/texto viejo/texto nuevo/ primera vez que aparezca en cada linea. Ejemplos: :1,$ s/hola/adios/ substituir el primer "hola" de cada linea del fichero por 'adios' Substituir texto desde las lineas P a U; todas las veces que aparezca. :'a,$ s/hola/adios/g substituir todos los "hola" por 'adios' desde la linea marcada 'a' hasta el final | :P,U s/texto viejo/texto nuevo/g |
Ignorar mayusculas/minusculas en busquedas y substituciones | :set ic |
No ignorarlas | :set noic |
Auto-margen: cada nueva linea aparece con el mismo margen que la linea anterior. (Util cuando se escriben ficheros FORTRAN) | :set ai |
No auto-margen. | :set noai |
Definicion de una abreviatura (ABREV en este caso) | abb ABREV texto |
Descripción | Comando |
---|---|
Deshacer el último cambio realizado | : u |
Añadir una línea antes del cursor | :O |
Añadir una línea después del cursor | :o |
Empezar a escribir al principio de la línea | :I |
Empezar a escribir al final de la línea | :A |
Empezar a escribir después del cursor |
Empezar a escribir antes del cursor|: i|
Estas combinaciones están activas cuando no estamos editando (ESC + i, ESC + a, etc..) y no hace falta presionar ESC.
Descripción | Comando |
---|---|
Entre carácteres | |
atrás | h |
adelante | l |
Entre líneas | |
atrás | k |
adelante | j |
Entre palabras | |
atrás | b |
adelante | w |
Entre frases | |
atrás | ( adelante ) |
adelante | CTRL-F |
Entre parágrafos | |
atrás | { |
adelante | } |
Media pantalla | |
atrás | CTRL-U |
adelante | CTRL-D |
Una pantalla | |
atrás | CTRL-B |
refresca la pantalla | CTRL+L |
cursor al final del fichero | g |
cursor al principio del fichero | 1 g |
cursor al final de la línea | $ |
cursor al principio de la línea | 0 |
Borrar un caracter(donde se encuentra el cursor) | ESC + x |
Borrar una palabra(donde se encuentra el cursor) | ESC+dw |
Borrar 8 caracteres | ESC+8x |
Borrar 2 palabras | ESC+2dw |
Borrar una línea entera(donde se encuentra el cursor) | ESC + dd |
Borrar el resto de una línea: (a la derecha del cursor) | ESC +D |
Copiar una linea: | yy |
copiar varias líneas | si ponemos un número antes indica el número de líneas a copiar. por ejemplo 5yy |
cortar una línea: | dd |
cortar varias líneas | ponemos un número antes del dd indicando el número de líneas a cortar 10dd corta 10 líneas a partir de la actual. |
Pegar lo copiado: | p después del cursor |
Pegar antes del cursor: | P |
Sobreescribir: | s |
Sustituir 15 caracteres por texto | 15s |
Sustituir un solo carácter por otro nuevo sin entrar en modo texto | r |
Sobrescribir texto | R |
Unir la línea del cursor con la siguiente | J |
Romper una línea en dos | i |
Repetir el último cambio realizado | . |
Buscar una palabra | / + palabra |
Seguir la búsqueda hacia adelante | n |
Seguir la búsqueda hacia atrás | N |
Sale al modo comandos | ESC |
Guardar fichero | w |
Guardar y salir | wq |
Guardar como | w <fichero> |
Guarda y salir forzando | wq! |
Salir sin guardar si no se han realizado cambios | q |
Salir sin guardar | q! |
Grabar si hay cambios | x |