Copyright © 2005-2019 LinuxTotal.com.mx
Se concede permiso para copiar, distribuir y/o modificar este documento siempre y cuando se cite al autor y la fuente de linuxtotal.com.mx y según los términos de la GNU Free Documentation License, Versión 1.2 o cualquiera posterior publicada por la Free Software Foundation.
vi
es el venerable y confiable editor de texto que
encontrarás en TODAS las distintas versiones, distribucciones, sabores
de Linux/Unix. Sumamente poderoso y complejo, con múltiples opciones y comandos
puede ser muy frustrante su uso para los principiantes o para los que no lo usan
muy a menudo. Por lo anterior, realizé la siguiente referencia que es un compendio
de sus opciones más usadas.
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 el renglón 45 |
vi +/cadena archivo | Abre el 'archivo' y posiciona el cursor en el primer renglón 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' |
:x | 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 un | Opción que permite mostrar numeración de líneas |
:set noun | 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 |
Si encuentras útil la información que proveé LinuxTotal, considera realizar un donativo que estimule a seguir proporcionando contenido de calidad y utilidad. Gracias.
Dona a través de paypal::
O a través de bitcoins:
Archivos como el de configuración de samba /etc/samba/smb.conf suelen tener comentarios que explican o detallan la variable a con....
Cuando usas rm para eliminar o borrar un archivo, lo que realmente sucede es que los datos del archivo, su información tal cual, ....
Imagínate que eres un administrador de sistemas Linux que trabaja desde un equipo Windows y usas Putty para conectarte a los serv....
En ambientes donde varios usuarios usan uno o más sistemas GNU/Linux, es necesario otorgar distintos permisos o privilegios para ....
En Linux existen tres formas de controlar y mostrar la marca del tiempo en archvios y directorios. Asi es, cuando creas o editas u....
La más simple definición de un proceso podría ser que es una instancia de un programa en ejecución (corriendo). A los procesos....
La demanda civil entablada por la empresa SCO contra la gigante IBM causó revuelo entre la comunidad Linux y Open Source cuando e....
Lo primero que debes hacer una vez que instalas un servidor de base de datos MySQL (casi todas las distros actuales lo instalan po....
¿Has visto esa combinación de r,w,x,- cuando listas un directorio?, tienes cierta idea que son los permisos, pero ¿como se usan....
...quien resuelve los nombres de dominio a su correspondiente IP, sería el DNS del proveedor, pero si implementamos un DNS Cache,....