vi - referencia rápida 

Copyright © 2005-2017 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.

Autor: Sergio González D.  

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
ComandosSiempre 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ónEn 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 archivoCrea o abre el 'archivo'
vi /usr/local/archivoCrea o abre el 'archivo' en el directorio indicado
vi -rMuestra archivos rescatados
vi -r archivoRecupera 'archivo'
vi arch1 arch2Abre archivos 'arch1' y 'arch2'
vi +45 archivoAbre el 'archivo' y posiciona el cursor en el renglón 45
vi +/cadena archivoAbre el 'archivo' y posiciona el cursor en el primer renglón donde encuentre 'cadena'
:e archivo2Abre 'archivo2' mientras se está en un archivo
:nAvanza al siguiente archivo abierto
:pAvanza al archivo abierto previo
:r otroarchivoInserta desde la posición actual del cursor 'otroarchivo'
:r !cmdlinuxInserta desde la posición actual del cursor la salida del comando de Linux indicado
:!cmdlinuxSe ejecuta el comando de Linux indicado
:wGuarda el documento actual
Terminando y cerrando
:qTermina y cierra si no hubo cambios
:q!Termina y cierra sin grabar cambios
:wqTermina y guarda documento
:wq nuevoarchTermina y guarda documento con el nombre 'nuevoarch'
:xTermina y guarda documento
Estableciendo opciones
:setMuestra las opciones establecidas actualmente
:set allMuestra todas las posibles opciones
:set opcionComienza o inicio de la opción
:set noopcionTermina o quita la opción
:set unOpción que permite mostrar numeración de líneas
:set nounQuita la numeración de líneas
:set roread only, archivo en modo de solo lectura
:set tabstop=6Establece el salto de tabulador a 6 espacios
Movimiento del cursor
hUna posición a la izquierda (flecha izquierda)
lUna posición a la derecha (flecha derecha)
kUna línea hacía arriba (flecha arriba)
jUna línea hacía abajo (flecha abajo)
0 (cero)Inicio de la línea
$Fin de la línea
wAdelante una palabra
WAdelante una palabra incluyendo puntuación
bAtrás una palabra
BAtrás una palabra incluyendo puntuación
eAl final de la palabra actual
EAl 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
HPrimera línea de la pantalla actual
MLí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)
^FAdelante una pantalla
^BAtrás una pantalla
^DAdelante media pantalla
^UAtrás media pantalla
1GMoverse a la línea 1
nGMoverse a la línea n
GMoverse a la última línea
Insertando texto (modo de inserción)
aInserta texto después del cursor
AInserta texto al fineal de la línea actual
iInserta texto antes del cursor
IInserta texto antes del primer caracter no espacio de la línea actual
oAbre una nueva línea después de la actual
OAbre una nueva línea antes de la actual
rRemplaza el caracter actual
RRemplaza el caracter actual y los siguientes hasta presionar ESC o terminar la línea
Modificando texto
xBorra el caracter actual
XBorra el caracter antes del cursor
nxBorra n caracteres
ddBorra la línea actual
nddBorra n líneas
dwBorra la palabra actual
ndwBorra n palabras
DBorra desde el cursor hasta el final de la línea
dLBorra desde el cursor hasta el final de la pantalla
dGBorra desde el cursor hasta el final del documento
cwReemplaza la palabra actual con nuevo texto
JJunta la línea actual con la siguiente
~ (tilde)Cambia may/min del caracter actual
uDeshacer el último cambio de texto
UDeshacer 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)
/textoBusca texto hacía adelante en el documento
?textoBusca texto hacía atrás en el documento
nRepite búsqueda a la siguiente ocurrencia
NRepite búsqueda a la siguiente ocurrencia, invierte dirección
:s/viejo/nuevoSustituye la primera ocurrencia de 'viejo' a 'nuevo' en la línea actual
:s/viejo/nuevo/gSustituye todas las ocurrencias de 'viejo' a 'nuevo' en la línea actual
:%s/viejo/nuevo/gSustituye todas las ocurrencias de 'viejo' a 'nuevo' en todo el documento
:s/viejo/nuevo/g/cSustituye 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
YCopia la línea actual
yyCopia la línea actual
nyyCopia n líneas desde la actual
ywCopia la palabra actual
pPega después del cursor
PPega antes del cursor
Números y rangos
NúmerosPrá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)
RangosPrá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)
:splitDivide el documento en dos ventanas horizontales con el mismo archivo y las mismas líneas en cada ventana
:vsplitDivide el documento en dos ventanas verticales con el mismo archivo y las mismas líneas en cada ventana
:split archivo2Divide el documento en dos ventanas horizontales con el archivo inicialmente cargado en una ventana y el 'archivo2' en la otra
:8split archivo2Divide 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.
:closeCierra la ventana actual
:onlyCierra todas las ventanas dejando solo la actual

LinuxTotal en:

Si encuentras útil la información que proveé LinuxTotal, considera realizar un donativo que estimule a seguir proporcionando contenido de calidad y utilidad. Gracias.

Más artículos de LinuxTotal

Como montar imágenes ISO en Linux.....


Si acostumbras trabajar en la línea de comandos de Linux, muy posiblemente uses el shell bash (Bourne Again Shell, derivado del b....


En ambientes donde varios usuarios usan uno o más sistemas GNU/Linux, es necesario otorgar distintos permisos o privilegios para ....


En SQL, 'Alter' es un comando de la categoría DDL (Data Definition Language) y como su nombre lo indica sirve para alterar objeto....


De acuerdo a la definición en wikipedia un rootkit es una herramienta, o un grupo de ellas que tiene como finalidad esconderse a ....


El siguiente script te presenta la manera de colocar un reloj (hora y fecha) en la parte superior derecha de una terminal de texto....


Hay múltiples maneras de cometer errores (algunos muy graves y desastrosos) cuando se administran servidores GNU/Linux, conócelo....


Ya no es nada raro que un centro de cómputo o en un site se encuentren varios sistemas Linux actuando como servidores de archivos....


Lo primero que debes hacer una vez que instalas un servidor de base de datos MySQL (casi todas las distros actuales lo instalan po....


En este archivo de configuración se indica el modo en que los mensajes del sistema son bitacorizados a través de la utileria sys....



Copyright © LinuxTotal.com.mx 2006-2017
info@linuxtotal.com.mx · linuxtotal.com.mx@gmail.com