10.2.2019
Si Vim es tú editor de texto favorito y estás usando Zsh, te enseñamos cómo usar el vi-mode para editar comandos.
Tenemos que hacer una confesión. Somos adictos a Vim. Específicamente al modo de movernos con el teclado sin siquiera utilizar las flechas direccionales y realizar acciones que de otra manera serían imposibles. Por suerte hay muchísimos programas que implementan de alguna manera los modos de operación de Vim. Particularmente hoy te vamos a mostrar como entrar en el vi-mode de Zsh, usando un plugin del genial oh-my-zsh.
Lo primero que tenemos que hacer es activar el plugin vi-mode
. Para hacerlo tenemos que editar o agregar una línea en el archivo .zshrc
con lo siguiente
plugins=(vi-mode)
Entrar en modo vi.
Ahora empieza la parte divertida. Para ingresar al Normal mode
presionamos ESC
o CTRL-[
. Y magia, aparecerá el indicador del modo normal y ya estamos listos para editar el comando the vim way. A continuación te dejamos todos los movimientos que podemos realizar.
Historial.
ctrl-p
: Previa entrada.ctrl-n
: Próxima entrada./
: Buscar para atrás.n
: Repetir la última búsqueda./
Editar en Vim.
v
: Editar la línea directamente en Vim.
Movimientos.
l
: Mover un carácter a la derecha.h
: Mover un carácter a la izquierda.$
: Ir al final de la línea.^
: Ir al primer carácter no blanco de la línea.0
: Ir al principio de la línea.w
: Moverse una palabra hacia adelante (cuenta los guiones como palabras).W
: Moverse una palabra hacia adelante (ignora los guiones).e
: Moverse al final de una palabra (cuenta los guiones como palabras).E
: Moverse al final de una palabra (ignora los guiones).b
: Moverse una palabra hacia atrás (cuenta los guiones como palabras).B
: Moverse una palabra hacia atrás (ignora los guiones).t{carácter}
: Se mueve a la derecha hasta una letra antes de la ocurrencia de{carácter}.
T{carácter}
: Se mueve a la izquierda hasta una letra antes de la ocurrencia de{carácter}
.f{carácter}
: Se mueve a la derecha hasta la ocurrencia de{carácter}
.F{carácter}
: Se mueve a la izquierda hasta una letra antes de la ocurrencia de{carácter}
.;
: Repetir el movimiento def
,t
,F
oT
.,
: Repetir el movimiento def
,t
,F
orT
pero en la dirección opuesta.
Insertar.
i
: Insertar texto antes del cursor.I
: Insertar texto al inicio de la línea.a
: Agregar texto después del cursor.A
: Agregar texto al final de la línea.o
: Inserta nueva línea abajo de la actual.O
: Inserta nueva línea arriba de la actual.
Eliminar e insertar.
ctrl-h
: EnInsert mode
, borra la letra después del cursor.ctrl-w
: EnInsert mode
, borra la palabra antes del cursor.d{movimiento}
: Borra el{movimiento}
.dd
: Borra la línea.D
: Borra todo desde el cursor hasta el final de la línea.c{movimiento}
: Borra el {movimiento} y entra enInsert mode
.cc
: Borra la línea y entra enInsert mode
.C
: Borra hasta el final de la línea y entra enInsert mode
.r{char}
: Remplaza el carácter bajo el cursor.R
: Entrar enReplace mode
.x
: Borrar carácter bajo el cursor.X
: Borrar carácter antes del cursor.
Varios.
Todos estos movimientos, pueden ser precedidos por cantidad de repeticiones. Si por ejemplo presionamos
5x
, eliminamos 5 carácteres bajo el cursor. Si nos queremos mover tres palabras presionariamos 3w
.
Para quitar el delay al momento de entrar al vi-mode
, agregamos la siguiente línea al .zshrc
.
export KEYTIMEOUT=1
El tema y cursor de los screenshots son logico zsh-theme y Typewriter