VI – REFERENCIA RÁPIDA

vi es el venerable y confiable editor de texto que encontrarás en TODAS las distintas versiones, distribucciones, sabores y colores de Linux. Para mí, el más poderoso y complejo, con millones de opciones y comandos, que puede ser muy frustrante para los principiantes o para los que no lo usan muy a menudo. Por eso y también para recordar todas las opciones he hecho la siguiente lista.

Donde se muestre: (dos puntos) indica que primero hay que presionar la tecla ESC y después la tecla ‘:’ que permite entrar al modo de comandos.

Modos
Comandos Siempre que se inicia vi comienza en modo de comandos, que como su nombre lo indica permite indicar comandos que ejecuten una acción específica, como búsquedas, copiar, pegar, eliminar líneas, mover el cursor, posicionarse en partes del documento, etc. Varios comados están disponibles directamente, con solo apretar una o dos teclas, y otros están disponibles en el modo “last line” o última línea que se accede a ella presionando la tecla dos puntos ‘:’ y en seguida se indica la acción o comando a ejecutar. Para salir del modo de última línea se presiona ESC.
Inserción En este modo es cuando se está realmente en el documento, cuando se puede escribirlo y editarlo. Para ingresar al modo de inserción se usa uno de los varios comandos que permiten entrar al modo de inserción (de texto), que se describen adelante en su apartado respectivo. Estando en el modo de inserción, para regresar al modo de comandos se presiona la tecla ESC.
Iniciar vi y comandos para archivos
vi archivo Crea o abre el ‘archivo’
vi /usr/local/archivo Crea o abre el ‘archivo’ en el directorio indicado
vi -r Muestra archivos rescatados
vi -r archivo Recupera ‘archivo’
vi arch1 arch2 Abre archivos ‘arch1’ y ‘arch2’
vi +45 archivo Abre el ‘archivo’ y posiciona el cursor en la línea 45
vi +/cadena archivo Abre el ‘archivo’ y posiciona el cursor en la primera línea donde encuentre ‘cadena’
:e archivo2 Abre ‘archivo2’ mientras se está en un archivo
:n Avanza al siguiente archivo abierto
:p Avanza al archivo abierto previo
:r otroarchivo Inserta desde la posición actual del cursor ‘otroarchivo’
:r !cmdlinux Inserta desde la posición actual del cursor la salida del comando de Linux indicado
:!cmdlinux Se ejecuta el comando de Linux indicado
:w Guarda el documento actual
Terminando y cerrando
:q Termina y cierra si no hubo cambios
:q! Termina y cierra sin grabar cambios
:wq Termina y guarda documento
:wq nuevoarch Termina y guarda documento con el nombre ‘nuevoarch’. Una especie de “Guardar como…”
😡 Termina y guarda documento
Estableciendo opciones
:set Muestra las opciones establecidas actualmente
:set all Muestra todas las posibles opciones
:set opcion Comienza o inicio de la opción
:set noopcion Termina o quita la opción
:set nu Opción que permite mostrar numeración de líneas
:set nonu Quita la numeración de líneas
:set ro read only, archivo en modo de solo lectura
:set tabstop=6 Establece el salto de tabulador a 6 espacios
Movimiento del cursor
h Una posición a la izquierda (flecha izquierda)
l Una posición a la derecha (flecha derecha)
k Una línea hacía arriba (flecha arriba)
j Una línea hacía abajo (flecha abajo)
0 (cero) Inicio de la línea
$ Fin de la línea
w Adelante una palabra
W Adelante una palabra incluyendo puntuación
b Atrás una palabra
B Atrás una palabra incluyendo puntuación
e Al final de la palabra actual
E Al final de la palabra actual incluyendo puntuación
n Arriba n líneas, primer caracter no espacio
n+ Abajo n líneas, primer caracter no espacio
H Primera línea de la pantalla actual
M Línea a mitad de la pantalla actual
L ültima línea de la pantalla actual
Movimientos de paginación (Presionar <ctrl.> (^) y la tecla indicada)
^F Adelante una pantalla
^B Atrás una pantalla
^D Adelante media pantalla
^U Atrás media pantalla
1G Moverse a la línea 1
nG Moverse a la línea n
G Moverse a la última línea
Insertando texto (modo de inserción)
a Inserta texto después del cursor
A Inserta texto al fineal de la línea actual
i Inserta texto antes del cursor
I Inserta texto antes del primer caracter no espacio de la línea actual
o Abre una nueva línea después de la actual
O Abre una nueva línea antes de la actual
r Remplaza el caracter actual
R Remplaza el caracter actual y los siguientes hasta presionar ESC o terminar la línea
Modificando texto
x Borra el caracter actual
X Borra el caracter antes del cursor
nx Borra n caracteres
dd Borra la línea actual
ndd Borra n líneas
dw Borra la palabra actual
ndw Borra n palabras
D Borra desde el cursor hasta el final de la línea
dL Borra desde el cursor hasta el final de la pantalla
dG Borra desde el cursor hasta el final del documento
cw Reemplaza la palabra actual con nuevo texto
J Junta la línea actual con la siguiente
~ (tilde) Cambia may/min del caracter actual
u Deshacer el último cambio de texto
U Deshacer los cambios en la línea actual
. (punto) Repite el último cambio de texto
>> Mueve la línea actual a la derecha un tabulador
<< Mueve la línea actual a la izquierda un tabulador
Buscando y reemplazando texto (en modo de comandos)
/texto Busca texto hacía adelante en el documento
?texto Busca texto hacía atrás en el documento
n Repite búsqueda a la siguiente ocurrencia
N Repite búsqueda a la siguiente ocurrencia, invierte dirección
:s/viejo/nuevo Sustituye la primera ocurrencia de ‘viejo’ a ‘nuevo’ en la línea actual
:s/viejo/nuevo/g Sustituye todas las ocurrencias de ‘viejo’ a ‘nuevo’ en la línea actual
:%s/viejo/nuevo/g Sustituye todas las ocurrencias de ‘viejo’ a ‘nuevo’ en todo el documento
:s/viejo/nuevo/g/c Sustituye todas las ocurrencias de ‘viejo’ a ‘nuevo’ en todo el documento y pregunta por confirmación
& Repite el último comando de sustitución ‘s’
Copiar y pegar texto
Y Copia la línea actual
yy Copia la línea actual
nyy Copia n líneas desde la actual
yw Copia la palabra actual
p Pega después del cursor
P Pega antes del cursor
Números y rangos
Números Prácticamente todos los comandos soportan el ser precedidos por un número que repetira el comando el número de veces indicado. Ejemplos:
5h (mueve el cursor 5 posiciones a la izquierda)
10yw (Copia las siguientes 10 palabras)
15dd (Elimina los siguientes 15 renglones)
4X (Elimina los cuatro caracteres previos del cursor)
Rangos Prácticamente todos los comandos en modo de última línea (: dos puntos) soportan el ser precedidos por un rango de líneas que repetira el comando en las líneas (inclusive) indicadas. Ejemplos:
:3,10d (Borra las líneas de la 3 a la 10)
:.,20yy (Copia de la línea actual (. punto) a la 20)
:.,$s/viejo/nuevo/g (Busca y reemplaza la cadena ‘viejo’ por ‘nuevo’ desde la línea actual a la última ($))
:%s/viejo/nuevo/g/c (Busca y reemplaza la cadena ‘viejo’ por ‘nuevo’ en todo el documento y pide por confirmación, % es equivalente a 1,$)
Dividir ventanas (No hay límite de ventanas)
:split Divide el documento en dos ventanas horizontales con el mismo archivo y las mismas líneas en cada ventana
:vsplit Divide el documento en dos ventanas verticales con el mismo archivo y las mismas líneas en cada ventana
:split archivo2 Divide el documento en dos ventanas horizontales con el archivo inicialmente cargado en una ventana y el ‘archivo2’ en la otra
:8split archivo2 Divide el documento en dos ventanas horizontales con el archivo inicialmente cargado en una ventana y el ‘archivo2’ en la otra con una altura de 8 líneas.
Ctrl + W (dos veces) Cambia el foco entre ventanas.
:close Cierra la ventana actual
:only Cierra todas las ventanas dejando solo la actual
Anuncios

Un comentario en “VI – REFERENCIA RÁPIDA

  1. Gracias, me resultó de muy amena lectura y de mucha utilidad dada la poca experiencia que tengo con vi.

    Me lo llevo para tener de referencia futura.

    Por cierto, en Gentoo, vi no viene preinstalado por defecto y que yo sepa fué asi siempre. (Es de ahí precisamente que viene mi falta de contacto con vi).

    ¡Saludos!

    Responder

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s