vimrc – No puedo cambiar a | cursor en modo insertar

Pregunta:

Quiero cambiar cursores a | carácter en modo insertar, y luego volver a un bloque en modo normal. Estoy usando urxvt como mi terminal y neovim.

Para cambiar cursores en mi terminal, ejecuto lo siguiente para obtener un I-beam parpadeante

echo -e "\033[5 q"

y luego ir a un bloque sólido:

echo e "\033[1 q"

Intenté esto en mi vimrc :

let &t_SI = "\033[1 q"
let &t_SR = "\033[5 q"
let &t_EI = "\033[5 q"

pero no funcionó. No ocurre nada diferente de lo normal cuando entro y salgo del modo de inserción.

También probé esto en mi vimrc :

if has("autocmd")
  au InsertEnter * silent execute "!print -n -- '\033[1 q'"
  au InsertLeave * silent execute "!print -n -- '\033[3 q'"
  au VimLeave * silent execute "!print -n -- '\033[5 q'"
endif

Cuando entro en el modo de inserción con esto, el editor sube una línea y la barra de estado se muestra dos veces en la parte inferior. Cuando salgo del modo de inserción, veo el texto [3 q debajo de la barra de estado. ¿Algunas ideas? Gracias

Algunos enlaces que probé:

https://bbs.archlinux.org/viewtopic.php?id=177281 https://bbs.archlinux.org/viewtopic.php?id=155802

Respuesta:

Neovim no usa vimrc , usa $XDG_CONFIG_PATH/nvim/init.vim . Sin embargo, hay más. En Vim, debe usar \<esc> para representar la tecla de escape. Puedo cambiar el cursor en Arch Linux en urxvt con lo siguiente en mi vimrc :

let &t_SI = "\<esc>[5 q"
let &t_SR = "\<esc>[5 q"
let &t_EI = "\<esc>[2 q"

También probé la técnica autocmd y funciona. En lugar de las tres líneas anteriores, lo hago:

au InsertEnter * silent execute "!echo -en \<esc>[5 q"
au InsertLeave * silent execute "!echo -en \<esc>[2 q"

Y el cursor cambia a una barra ( | ) en el modo de inserción. En urxvt :

  • 1 es el cursor de bloque parpadeante
  • 2 es el cursor de bloque predeterminado (sin parpadeo)
  • 3 es guión bajo parpadeante
  • 4 subrayado fijo
  • Barra de 5 tubos (parpadeando)
  • 6 barra de tubería fija

En neovim cosas funcionan de manera diferente. Aunque :help termcap-cursor-shape es el mismo que en Vim, parece ignorar t_SI , t_SR y t_EI . Como Caleb Eby descubrió el NVIM_TUI_ENABLE_CURSOR_SHAPE controles variables neovim 's forma del cursor en su lugar.

Por lo tanto, puede agregar:

let $NVIM_TUI_ENABLE_CURSOR_SHAPE = 1

A su ~/.config/nvim/init.vim y el cursor funcionará como si las variables termcap estuvieran configuradas como:

let &t_SI = "\<esc>[5 q"
let &t_SR = "\<esc>[3 q"
let &t_EI = "\<esc>[2 q"

(Pero no puedes cambiar los valores, en la medida en que me entrometí con esto)

Referencia:

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım