El editor vi, el vi es el editor de texto más usado en Linux, el editor vi siempre lo encontrarás en cualquier implementación de Linux así como el todos los sistemas operativos Unix. En este artículo encrontraréis un resumen de los comandos del editor.
LINEA DECOMANDO UNIX/LINUX
vi
vi archivo Editar un fichero (Si el fichero es de solo lectura lo editara en modo solo lectura.
vi archivo_1 archivo_2 archivo_n Editar varios ficheros sucesivamente.
vi -R Editar en modo solo lectura.
vi -r Editar recuperando modificaciones no salvadas.
MODO COMANDO (Se pasa desde el modo edición pulsando la tecla <ESC>)
MOVIMIENTO DE CURSOR
h Carácter anterior.
j,'ENTER' Linea siguiente.
k Linea anterior.
l,'ESPACIO' Carácter siguiente.
L Ultima linea de la pantalla.
H Primera linea de la pantalla.
M Linea central de la pantalla.
'CTRL+B' Retroceso de pagina.
'CTRL+F' Avance pagina.
+ Primer Carácter de la linea siguiente.
- Primer carácter de la linea anterior.
$ Desplazarse al final de linea.
0 Desplazarse al principio de linea.
EDICION
i Pasar a modo edición insertando.
R Pasar a modo edición reemplazando.
a Avanzar el cursor y pasar a modo entrada insertando.
o Insertar una linea despu?de la actual y pasar a insertar.
O Insertar una linea antes de la actual y pasar a insertar.
CORREGIR
u Deshacer última modificación.
'CTRL+R' En vi sirve para deshacer el último comando 'u'.
U Recuperar linea completa.
BUSCAR
/ Busca una cadena de caracteres, hacia delante.
? Busca una cadena de caracteres, hacia atrás
n Siguiente en la búsqueda.
N Anterior en la búsqueda.
COPIAR, MOVER, BORRAR LINEAS
dd Borrar una linea.
'n'dd Borrar 'n' lineas.
yy Meter una linea en el buffer.
'n'yy Meter 'n' lineas en el buffer.
p Copiar la linea del buffer después de la linea actual.
P Copiar la linea del buffer antes de la linea actual.
VARIOS
CTRL+L Refrescar pantalla. (Cuando se descompone la pantalla)
CTRL+G Visualiza el nombre del fichero, numero de lineas totales y en que linea estamos.
J Une la linea actual con la siguiente.
. Repetir ultimo comando.
: Pasar al modo ex (Modo comandos)
ZZ Terminar salvando si hubo cambios.
MODO EJECUCION
Se pasa desde el modo de comandos al modo ejecución con ':'
Se puede forzar a entrar directamente en este modo usando la opción -e o ejecutando el comando 'ex'.
:'#line' Ir a una linea.
:e 'fichero' Pasa a editar de forma simultanea otro fichero.
:e # Volver al fichero anterior.
:n Ir al siguiente fichero (En caso de abrir varios a la vez)
:w Salvar.
:w! Salvar forzando (Cuando falla :w).
:x Salir salvando si es necesario.
:w Salvar con otro nombre. (No puede existir el fichero)
:w! Salvar con otro nombre forzando.(Permite sobreescribir)
:r Lee un fichero y lo carga en el lugar indicado por la posición actual del cursor.
:r! Ejecuta en una subshell el comando y guardando el resultado del mismo en la posición indicada por el cursor.
:q Salir si no hay modificación
:q! Salir sin salvar cambios.
:wq Salir salvando cambios.
:sh Ejecutar una subshell (se retorna con exit).
:g//p Visualizar lineas que tienen.
:g//s///g Sustituir globalmente 's1' por 's2'.
:g//s///gc Igual pero pidiendo confirmación
:n Siguiente fichero.
:args Mirar ficheros a editar.
:ab m n Abreviaturas. Teclear 1 se sustituye por 2
:unab m Desabreviar.
:map m n Crear macro (m hace n) (Ver ejemplos con macros)
:map! m n Crear macro en modo inserción m hace n)
:unmap m Destruir macro m
:unmap! m Destruir macro de inserción.
:cd Cambiar de directorio actual.
:set nu Activar visualización de números de línea
:set nonu Activar visualización de números de línea
:set all Ver todas las opciones con sus valores.
:set showmode Para visualizar siempre el modo en que nos encontramos.
:! Ejecutar un comando en una subshell.(Ver ejemplos con !)
Muchos de estos comandos pueden aplicarse dentro de un rango de líneas especificado.
Un numero de <#linea> puede venir como un número, un punto, o $.
. Linea actual
N Linea N
$ Ultima linea.
:#linea1, #linea2 w Salvar desde 1 hasta la 2 en
:#linea1, #linea2 co #linea3 Copiar desde 1 hasta 2 en 3.
:#linea1, #linea2 mo #linea3 Mover desde 1 hasta 2 en 3.
:#linea1, #linea2 d Borrar desde 1 hasta 2.
:#linea1, #linea2 s// Sustituir la primera ocurrencia en cada linea desde 1 hasta la 2 la cadena por la cadena
:#linea1, #linea2 s///c Sustituir la primera ocurrencia en cada linea desde 1 hasta la 2 la cadena por la cadena con confirmación
:#linea1, #linea2 s///g Sustituir todas las ocurrencias en cada linea desde 1 hasta la 2 la cadena por la cadena
:#linea1, #linea2 s///gc Sustituir todas las ocurrencias en cada linea desde 1 hasta la 2 la cadena por la cadena con confirmación