2 Unix Fundamentals (VI o “quien bien te quiere te hará llorar)
El VI es el comando por el que mucha gente pasa del unix. Mucho Ubuntu, linux y demás, que cuando hace falta modificar a mano un fichero, se acuerdan de la madre del vi.
Cuando aprendes tres letras, ya no puedes pasar de el. Estas son las cuatro cosas que se yo. Luego haré una lista con las mas prácticas:
#vi nombredefichero
Una vez dentro, hay tres modos :
Comand mode (en cualquier momento pulsando ESC, la siguiente tecla es un comando)
Last line mode (pulsar ESC y dos puntos :, se va al final de la pantalla y espera otros comandos (guardar, salir sin guardar, buscar, reemplazar, si hay varios documentos abiertos pasar de uno a otro, ejecutar algo en la shell, etc..)
Input or insert mode (Pulsando i, donde esté el cursor, se empieza a escribir)
Longitud maxima de linea 256 caracteres. El simbolo ~ es el final del fichero.
Movimiento del cursor
l Caracter a la derecha h Caracter a la izquierda j Linea abajo k Linea arriba <espacio> Caracter a la derecha G Ir a la última linea del fichero nG Ir a la n numero linea $ Ir al final de la linea ^ Ir al principio de la linea w principio de la siguiente palabra b principio de la palabra anterior e final de la palabra H Primera linea de la pantalla M Media pantalla L Ultima linea de la pantalla ( Principio de sentencia ) Final de sentencia { Principio de parrafo
Inserción de texto
i Insertar a partir de donde estamos. I Insertar a partir del principio de la linea. a Insertar en el siguiente caracter en el que estemos. A Insertar al final de la linea. o Añade una linea por abajo. O Añade una linea por encima.
Borrado de texto
x Borra un caracter desde donde estemos. nx Borra n caracteres. X Borra caracter anterior. nX Borra n caracteres antes. dd Borra la linea. db Borra la palabra anterior. dw Borra la palabra siguiente. dG Borra todo desde la linea donde estamos hasta el final.
Reemplazar texto
r Reemplaza un caracter y deja el modo comando s Reemplaza un caracter y deja el modo en insert. R Reemplaza multiples caracteres manteniendo pulsada la tecla ESC. cw Cambia al principio de la siguiente palabra. cc Cambia la linea entera cG Cambia hasta el final de la linea.
Undo
u Undo último cambio
U Undo todos los cambios en una linea
. Redo
Scroll
CTRL-b Scroll una pagina atrás. CTRL-f Scroll una pagina adelante. CTRL-uCTRL-d Scroll media pagina atrás.Scroll media pantalla adelante
Buscar y reemplazar
/text Buscar el texto hacia abajo, te deja el cursor en la primera coincidencia. ?text Busca el texto hacia arriba. / Repite la búsqueda abajo. ? Repite la búsqueda arriba. n Repetir en la misma dirección. N Repetir en la dirección contraria. :s/oldtext/newtext Reemplaza hacia abajo un texto por otro. :m,ns/oldtext/newtext Reemplaza el texto hacia abajo desde la linea m hasta la ns :s/oldtext/newtext/g Reemplaza todas las coincidencias del texto. /<space>text Si se añade un espacio, busca desde la palabra entera /^text Busca solo al principio de la linea. /text$ Busca solo al final de la linea. /(More than one word) Usar paréntesis para buscar mas de una palabra.
Copy Paste
yy Copia la linea donde estás. nyy Copia n lineas despues de donde estás. p Paste después. P Paste antes. :m a Mueve la linea actual y paste desupes de la linea numero a. :a,bmc Muevel lineas de la a a la b y paste después de la linea c :a,btc Copia lineas de la a la b y paste después de la linea c.
Importar/Exportar a fichero dentro del vi
:r nombredefichero Lee nombredefichero
:w fichero graba fichero
:3,35w fichero guarda la linea de la 3 a la 35 con ese nombre de fichero.
Configuración VI
:set number Pone número de lineas :set all Todas las opciones. :set autoindent Autoindenta con la última linea. :set readonly Read only. :set wrapmargin=n Si la linea es de 80 caracteres por defecto pone 6 de margen :set showmode
Muy util poner esta configuración en $HOME/.exrc para que se guarden las opciones.