Me gustaría saber, si es posible, cómo cambiar el cursor en Vim (en color, forma, etc.) dependiendo del modo en el que se encuentre.
Constantemente me olvido de que no estoy en el modo de inserción y empiezo a escribir código, lo que provoca que sucedan todo tipo de cosas locas. Sería útil si hubiera algún tipo de indicación visual en el cursor.
Respuestas:
Una opción popular para indicar el cambio hacia y desde el modo Insertar es alternar la
cursorline
opción, que es responsable de si la línea de pantalla actual está resaltada (ver:help cursorline
):o alternativamente,
Modifique el
CursorLine
grupo de resaltado para cambiar el estilo de la línea del cursor a su gusto (ver:help :highlight
y:help highlight-groups
).fuente
cursorline
opción no depende de ninguna capacidad específica de la plataforma; está disponible en cualquier instancia de Vim compilada con la+syntax
función (que suele ser el caso).echo 'autocmd InsertEnter,InsertLeave * set cul!' >>~/.vimrc
Lo siguiente funciona en xterm, urxvt y otros emuladores de terminal en Linux; iTerm2 en macOS; Git Bash con ConEmu en Windows; y más (ver comentarios):
Otras opciones (reemplace el número después
\e[
):Cuando usa tmux , es importante usarlo así (sin el
\<Esc>Ptmux;
escape). tmux hará un seguimiento de la forma correcta del cursor cuando cambie de ventana / panel.Si no funciona para usted, intente configurar
TERM=xterm-256color
antes de iniciar tmux, o agregue esto a su.tmux.conf
( gracias @Steven Lu ):fuente
set -ga terminal-overrides ',*:Ss=\E[%p1%d q:Se=\E[2 q'
mi configuración tmux. Aparentemente, si usaset
paraterminal-overrides
sin-a
, anulará la configuración, que ya tiene esto allí de forma predeterminada.Si está utilizando tmux e iTerm2 en macOS ,
lo siguiente cambia el cursor de un bloque a un cursor y resalta la línea actual
crédito: https://gist.github.com/andyfowler/1195581
fuente
terminal-overrides
solo se agregara a, para que no golpeara la,*:Ss=\E[%p1%d q:Se=\E[2 q
parte determinal-overrides
. entonces mi configuración se ve comoset -sa terminal-overrides ",xterm-256color-italic:Tc"
(para establecer la habilitación de color de 24 bits sin pisotear los estilos de cursor Ss / Se.Para cambiar la forma del cursor en diferentes modos, puede agregar lo siguiente en su
.vimrc
archivo.Para el terminal GNOME (versión 2.26):
Si usa más de un perfil en GNOME Terminal, es posible que deba adaptarlo a sus perfiles.
Para Konsole en KDE4:
Esto funciona con múltiples pestañas y ventanas.
Consulte también: " Cambiar la forma del cursor en diferentes modos " en Vim Tips Wiki .
fuente
set ttimeoutlen=0
Puede probar el complemento terminus vim :
fuente
Me resulta útil tener el cursor parpadeando solo en el modo Insertar y estático en otros modos.
fuente
No estoy seguro de si alguien más se enfrenta a un retraso después de presionar el Esc presionar tecla para volver al modo normal y mostrar el cursor de bloque, pero si es así, esta es la forma en que lo soluciono también.
En realidad, estoy usando iTerm2 y usando Vim dentro de mi terminal en macOS. Y al ingresar al modo de inserción, el cursor sigue siendo un bloque y es un poco confuso cuando estás en el modo de inserción o en el modo normal.
Quería mostrar una línea delgada como cursor cuando estaba en modo de inserción y volver a bloquear cuando estaba en modo normal como lo hace MacVim. Y para hacerlo es bastante simple, simplemente agregué esto a mi
.vimrc
archivo como se describe aquí :Pero como puede ver, hubo un retraso al presionar
ESC
para salir del modo de inserción y volver al modo normal y mostrar el bloque como cursor nuevamente. Entonces, para solucionarlo, encontré esto:Y ahora funciona bastante bien como puede ver:
¡Espero que pueda ayudar a alguien más! 👻
fuente
No creo que esto agregue mucho a las respuestas que otras personas ya han brindado, pero quería resumir de alguna manera las cosas en un solo lugar y también tener enlaces a las referencias relevantes.
Así es como se ve el fragmento relevante de mi
.vimrc
:Nota: Los
'^['
caracteres son en realidad unESC
carácter de control (secuencia de escape).fuente
Esto funciona correctamente en xfce4-terminal:
agregue el siguiente script a su
.vimrc
Breve: Como usted sabe, xfce4-terminal mantiene las preferencias en el
.config/xfce4/terminal/terminalrc
archivo. La secuencia de comandos cambiaTERMINAL_CURSOR_SHAPE_BLOCK
aTERMINAL_CURSOR_SHAPE_IBEAM
cuando estás en modo de inserción y vuelve a bloquear cuando sales del modo de inserción o vim. Siéntase libre de cambiarIBEAM
a cualquier cosa que desee (BLOCK
,IBEAM
yUNDERLINE
está disponible).fuente
Si está utilizando una versión moderna de
nvim
y desea lograrlo, puede evitar algunas de estas soluciones elegantes enumeradas anteriormente.La siguiente configuración cambiará del cursor de bloque en modo normal al cursor subrayado en reemplazo al cursor de línea en inserción.
Me las arreglé para que esto funcionara con la siguiente configuración extraída de estas dos fuentes.
forma-cursor-tui
guicursor
fuente
Normalmente tengo el modo vim actual en statusline, entre otras cosas. Si busca simplicidad, puede establecer solo esta información en la línea de estado .
Sin embargo, por lo general, las cosas realmente locas suceden cuando tienes el bloqueo de mayúsculas presionado y estás en el modo de comando (ya que hjkl ahora son HJKL, solo J y K son suficientes para hacerte arrancarte los pelos cuando no entiendes lo que está sucediendo.
:h J
y:h K
para ver a qué me refiero). Solo tenga cuidado con la tecla de bloqueo de mayúsculas y estará bien la mayor parte del tiempo, en mi opinión.fuente