Yo uso vim en algunos contextos diferentes; típicamente, me gusta poner esto en mi .vimrc
:
let &t_ti.="\<Esc>[1 q"
let &t_SI.="\<Esc>[5 q"
let &t_EI.="\<Esc>[1 q"
let &t_te.="\<Esc>[0 q"
Esto hace que la inserción y el modo normal usen diferentes cursores (el modo normal es un cursor de bloque y el modo de inserción es una línea vertical). Esto funciona para mí en mintty con cygwin, xterm y también rvxt muy bien. Sin embargo, cada vez que uso la pantalla GNU, mi cursor ya no cambia. He visto referencias para arreglar esto para tmux (por ejemplo, aquí: Forma del cursor bajo vim + tmux ), pero nada de lo que he intentado para Screen ha funcionado. Por ahora, estoy usando esto en mi .vimrc
:
"Underline currently edited line
if !has("gui_running")
:autocmd InsertEnter * set cul
:autocmd InsertLeave * set nocul
endif
Eso hace que cuando esté en modo de inserción, la línea actual esté subrayada ( :has("gui_running")
esto evita que surta efecto en gvim). También uso set laststatus=2
para mantener la barra de estado en la parte inferior, lo que también ayuda. Solo desearía que funcionara un poco más como gvim. Alguien ha encontrado una solución para esto?
fuente
Respuestas:
Creo que lo descubrí, aunque no entiendo totalmente la solución. Esto parece funcionar para mintty, xterm y rxvt:
Esto se apoya en que su screenrc tenga algo como "term screen" o "term screen-256color" para que el archivo vimrc pueda identificar en qué terminal está. El único terminal restante que uso regularmente donde esto no funciona es PuTTY, pero creo que literalmente no admite comandos de terminal para cambiar la forma del cursor. Mintty se bifurcó de PuTTY hace un tiempo, y vi aquí ( https://www.cygwin.com/ml/cygwin-announce/2009-07/msg00011.html ) que el soporte de DECSCUSR se agregó a mintty después de esa bifurcación.
Esto es lo suficientemente bueno para mí: si me estoy metiendo en una máquina donde realmente quiero mi cursor de bloque en Vim, creo que puedo cygwin / ssh o PuTTY / XMing / rxvt a través de él en lugar de PuTTY.
fuente
echo &term
salidasscreen
Así que cambió la expresión regular en la línea de salidaif &term ...
ascreen.*
.