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)
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.
ctrl-p
: Previa entrada.ctrl-n
: Próxima entrada./
: Buscar para atrás.n
: Repetir la última búsqueda. /
v
: Editar la línea directamente en Vim.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 de f
, t
, F
o T
.,
: Repetir el movimiento de f
, t
, F
or T
pero en la dirección opuesta.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.ctrl-h
: En Insert mode
, borra la letra después del cursor.ctrl-w
: En Insert 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 en Insert mode
.cc
: Borra la línea y entra en Insert mode
.C
: Borra hasta el final de la línea y entra en Insert mode
.r{char}
: Remplaza el carácter bajo el cursor.R
: Entrar en Replace mode
.x
: Borrar carácter bajo el cursor.X
: Borrar carácter antes del cursor.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