Vi

De La Wiki de KiVi
(Redirigido desde «Vim»)

Vi es el editor básico integrado en todas las distribuciones Linux y que se ha ido cambiando a nano por su facilidad de uso.

vi (Visual) es un programa que entra en la categoría de los editores de texto, pues a diferencia de un procesador de texto no ofrece herramientas para determinar visualmente cómo quedará el documento impreso. Por esto carece de opciones como centrado o justificación de párrafos, pero permite mover, copiar, eliminar o insertar caracteres con mucha versatilidad. Este tipo de programas es frecuentemente utilizado por programadores para escribir código fuente de software.

Vi fue originalmente escrito por Bill Joy en 1976, tomando recursos de ed y ex, dos editores de texto para Unix, que trataban de crear y editar archivos, de ahí, la creación de vi.

Hay una versión mejorada que se llama Vim, pero Vi se encuentra en —casi— todo sistema de tipo Unix, de forma que conocer rudimentos de Vi es una salvaguarda ante operaciones de emergencia en diversos sistemas operativos.

Comando Significado
Empezar vi
vi nombre_de_archivo Abrir o crear el archivo
vi Abrir un archivo nuevo para nombrarlo más tarde
vi -r nombre_de_archivo Recuperar un archivo de una caída del sistema
view nombre_de_archivo Abrir archivo sólo para leer
Comandos del cursor
h Moverse un carácter hacia la izquierda
j Moverse una línea hacia abajo
k Moverse una línea hacia arriba
l Moverse un carácter a la derecha
w Moverse una palabra a la derecha
W Moverse una palabra a la derecha (pasados los signos de puntuación)
b Moverse una palabra a la izquierda
B Moverse una palabra a la izquierda (pasados los signos de puntuación)
e Moverse al final de la palabra actual
Return Moverse una línea hacia abajo
Back Space Moverse un carácter a la izquierda
Space Bar Moverse un carácter a la derecha
H Moverse a la parte de arriba de la pantalla
M Moverse al centro de la pantalla
L Moverse a la parte inferior de la pantalla
Ctrl-F Paginar una pantalla hacia adelante
Ctrl-D Desplazarse media pantalla hacia adelante
Ctrl-B Paginar una pantalla hacia atrás
Ctrl-U Desplazarse media pantalla hacia atrás
Insertar caracteres y líneas
a Insertar caracteres a la derecha del cursor
A Insertar caracteres al final de la línea
i Insertar caracteres a la izquierda del cursor
I Insertar caracteres al principio de línea
o Insertar una línea por debajo el cursor
O Insertar una línea por encima del cursor
Cambiar texto
cw Cambiar una palabra (o parte de una palabra) a la derecha del cursor
c Cambiar una línea
C Cambiar desde el cursor hasta el final de la línea
s Sustituir cadena por carácter(es) desde el cursor hacia adelante
r Reemplazar el carácter marcado por cursor por otro carácter
r Return Partir una línea
J Unir la línea actual con la línea inferior
xp Transponer el carácter del cursor con el carácter a la derecha
~ Cambiar el tipo de letra (mayúscula o minúscula)
u Deshacer el comando anterior
U Deshacer todos los cambios en la línea actual
:u Deshacer el comando anterior sobre la línea última
Eliminar texto
x Eliminar el carácter del cursor
X Eliminar el carácter a la izquierda del cursor
dw Eliminar la palabra (o la parte de la palabra a la derecha del cursor)
dd Eliminar la línea que contiene al cursor
D Eliminar la parte de la línea a la derecha del cursor
dG Eliminar hasta el final de línea
d1G Eliminar desde el principio del archivo hasta el cursor
:5,10 d Eliminar las líneas de la 5 a la 10
Copiar y mover texto
yy Tirar o copiar línea
Y Tirar o copiar línea
p Poner la línea tirada o eliminada por debajo de la línea actual
P Poner la línea tirada o eliminada por encima de la línea actual
:1,2 co 3 Copiar las líneas de la 1 a la 2 y ponerlas después de la línea 3
:4,5 m 6 Mover las líneas de la 4 a la 5 y ponerlas después de la línea 6
Ajustar la numeración de las líneas
:set nu Mostrar los números de las líneas
:set nonu Esconder los números de las líneas
Establecer la distinción entre mayúsculas y minúsculas
:set ic En la búsqueda se ignora la distinción entre mayúsculas y minúsculas
:set noic En la búsqueda se distingue entre mayúsculas y minúsculas
Encontrar una línea
G Ir a la última línea del archivo
1G Ir a la primera línea del archivo
21G Ir a la línea 21
Buscar y reemplazar
/string Búsqueda de cadena de caracteres
?string Búsqueda hacia atrás de cadena de caracteres
n Encontrar la siguiente aparición de string en la dirección de búsqueda
N Encontrar la aparición previa de la cadena de caracteres en la dirección de búsqueda
:g/search/s//replace/g Buscar y reemplazar
:%s/web.com\/test/web.com/g %: Indica que la operación se aplicará a todo el archivo (todas las líneas).

s: Significa "sustituir" (substitute), Definimos el patrón a buscar (antes de la primera "/") y el texto de reemplazo (después de la segunda "/"). Observa que la barra "/" dentro del patrón debe ser escapada con una barra invertida "\" para que sea interpretada como un carácter literal y no como un delimitador. g: Indica que se deben reemplazar todas las ocurrencias en cada línea, no solo la primera.

Limpiar la pantalla
Ctrl-L Limpiar (actualizar) la pantalla
Insertar un archivo en otro archivo
:r nombre_de_archivo Insertar (leer) el archivo a continuación del cursor
:34 r nombre_de_archivo Insertar el archivo después de la línea 34
Guardar y salir
:w Guardar los cambios (escribir el contenido de la memoria intermedia)
:w nombre_de_archivo Escribir el contenido de la memoria intermedia a un archivo con nombre
:wq Guardar los cambios y salir de vi
ZZ Guardar los cambios y salir de vi
:q! Salir sin guardar los cambios

Mejor y más bonito

Ahora, si queremos darle más potencia y belleza, recomiendo Nvim y LazyVim.