Vi, editor de consola
Índice
1. Descripción
2. Invocación
3. Movimientos del cursor
4. Texto
4.1 Insertar
4.2 Borrar
4.3 Cambiar
4.4 Copiar / pegar
4.5 Buscar /substituir
5. Repetir y deshacer
6. Comandos del shell
7. Operaciones con archivos
8. Opciones de entorno
9. Macros
1. Descripción
Características:
Vi es el editor estándar de los Sistemas Operativos de la familia Unix/Linux. En principio puede resultar un poco difícil,sobre todo para los usuarios de Windows.Sin embargo, dado que es prácticamente el único editor que puedes encontrar pre-instalado en cualquier PC o Servidor con Unix/Linux, aprender a usarlo es muy aconsejable.
2. Invocación
$vi Editar un texto sin nombre
$vi archivo Editar un archivo (nuevo o no)
$vi archivo1 archivo2 Editar lista de archivos
$vi +n archivo Editar archivo en la línea n
$vi +/txt archivo Editar archivo en la 1a línea donde aparece txt3. Movimientos del cursor
k Arriba
j Abajo
h Izquierda
l Derecha
0 Inicio de línea
$ Fin de línea
w Word: Avanzar palabra
b Back: Retroceder palabra
e End: Al final de palabra
H Home: Esquina sup. izq. de la ventana
L Last: Esquina inf. izq. de la ventana
crtl+u Window up: Subir ventana
crtl+d Window down: Bajar ventana
crlt+b Page back: Retroceder página
crtl+f Page forward: Avanzar página
nG Go: Salta a la línea n.
1G A la primera línea
$G A la última línea
fcar Buscar en la línea el carácter car (hacia delante)
Fcar Buscar en la línea el carácter car (hacia atrás)4. Texto
4.1 Insertar
i Insertar (delante del cursor)
I Insertar al principio de la línea
a Añadir (detrás del cursor)
A Añadir al final de la línea
o Insertar una línea debajo de la actual
O Insertar una línea encima de la actual4.2 Borrar
x Borrar caracter actual
X Borrar caracter anterior
dd Borrar línea actual
D Borrar hasta final de línea
dw Borrar palabra4.3 Cambiar
rcar Reemplazar el caracter actual por car
R Reemplazar texto desde la posición del cursor
s Substituir el caracter actual por texto a insertar
S Substituir la línea actual
C Cambiar hasta el final de la línea
cw Cambiar palabra
J Unir a la línea actual la siguiente4.4 Copiar / pegar
yy Copiar en el buffer la línea actual
nyy Copiar en el buffer n líneas desde la actual
yw Copiar en el buffer la palabra actual
ynw Copiar en el buffer n palabras desde la actual
p Pega el buffer detrás del cursor
P Pega el buffer delante del cursor4.5 Buscar /substituir
% Busca el caracter delimitador ( ) [ ] { } que balancea el actual (Dentro de un entorno salta al delimitador inicial)
/ExpReg Busca hacia delante la expresión regular ExpReg
?ExpReg Busca hacia atrás la expresión regular ExpReg
n Repite la última búsqueda
N Repite la última búsqueda en el sentido contrario
:s/txt/txt2 Substituye el texto txt por txt2 la primera vez que aparece en la línea
:s/txt/txt2/g Substituye todas las apariciones de txt por txt2 en la línea
:m,n s/txt/txt2/g Substituye en el rango de líneas [m,n]
:%s/txt/txt2/g Substituye txt por txt2, en todo el archivo5. Repetir y deshacer
. Repetir último comando de actualización (Borrado/Inserción/Cambio)
u Deshacer último comando de actualización
U Deshacer todos los cambios en la línea actual6. Comandos del shell
:sh Invoca un nuevo shell. Al salir continua la edición
:!CmdShell Ejecuta un comando del sistema operativo
:r!CmdShell Ejecuta un comando del S.O. e inserta su salida en la posición del cursor
:!! Repite el último comando ejecutado en un shell7. Operaciones con archivos
:w Graba las modificaciones efectuadas en el archivo
:w archivo Escribe el texto actual en archivo (Sólo si no existía)
:q Salir (si no hay cambios)
:q! Salir (sin grabar)
:wq Guardar cambios y salir
:x Guardar cambios y salir
ZZ Guardar cambios y salir
:= Muestra el número total de líneas del archivo
:.= Muestra el número de línea actual
crtl+G Muestra el nombre del archivo, línea actual, número total de líneas y
porcentaje recorrido del archivo
:r archivo2 suma archivo2 dentro del archivo actual, si grabas :w solo el
archivo inicial sera afectado
:e archivo2 abre separadamente archivo2
:ls lista los archivos abiertos
:b1 abre archivo1, :b2 abre archivo2, :b3 abre archivo3 y asi sucesivamente
:bn cambia al proximo archivo
:bp cambia al archivo anterior
vi -o archivo1 archivo2 archivo3 abre simultaneamente los 3 archivos, dividiendo la tela horizontalmente
* se aplica a las opciones con 3 archivos (también puedes hacerlo con 2)
Ctrl+w +w * Dejas el Ctrl presionado y pulsas 2 veces "w", te cambia de "división"
o sea, cambias entre el archivo1, archivo2, y archivo3 dentro de la tela
Ctrl+w +j * Dejas el Ctrl presionado y pulsas 1 vez "w", y 1 vez "j",te cambia de
"división" hacia abajo, cambias entre el archivo1, archivo2, y archivo3
dentro de la tela de edicción
Ctrl+w +k * igual al anterior, pero te cambia hacia arriba
vi -O archivo1 archivo2 archivo3 abre simultaneamente los 3 archivos, dividiendo la tela verticalmente
Ctrl+w +h * igual al "Ctrl+w +j", pero te cambia hacia la izquierda
Ctrl+w +l * igual al anterior, pero te cambia hacia la derecha8. Opciones de entorno
:set opción Activa la opción de vi correspondiente
:set noopción Desactiva la opción de vi correspondiente
all Muestra todas las opciones y sus valores
number Muestra numeración de líneas
list Muestra caracteres de control
ic Ignora mayúsculas/minúsculas en las búsquedas9. Macros
q letra Activa la grabación de la macro nombrada como la letra pulsada
tras la "q" (pej qa)
Pulsando ESC y la letra "q" de nuevo queda finalizada la grabación.
@ letra Repite la macro llamada como la letra (pej @a). Se puede repetir esta
macro varias veces anteponiendo un número a la "@"
(pej 23@a para repetir 23 veces)
Ejemplo qaiholaESCq grabará una macro llamada "a" que escribe "hola"
20@a escribirá 20 veces seguidas "hola"