Vim: ¿Cómo detectar el modo en que se encuentra el usuario, para la línea de estado?
Necesito una forma simple (o compleja) de averiguar en qué modo está el usuario. Necesito saber si el usuario está en Normal, Insertar, Visual, Reemplazar, Cambiar, etc.
Soy consciente de lamode()
función, sin embargo, no puedo averiguar cómo hacer que se genere una cadena completa en lugar de un solo carácter.
Mi plan era hacer una función que cambiara dinámicamente los colores de fondo y de primer plano de la línea de estado dependiendo de qué cadenamode()
devoluciones. Básicamente una función con un montón de ifs y elseifs que lo harían por mí. Sin embargo, hay una falla con este enfoque, no puedo saber qué color configura el tema de manera predeterminada.
Básicamente, necesito algunos consejos / ayuda sobre cómo realizar una función que haga lo siguiente:
Sabe en qué modo está el usuario. El resto de las funciones reaccionan de manera diferente cada vez que esto cambia.Establece algunas variables confg
ybg
valores que reflejan lo que el tema actual ha establecido para ellos.Cambia el primer plano y el fondo de la línea de estado en función de estos valores.Intenté hacerlo, pero era una manera muy burda de hacerlo y no funcionó en absoluto. Solo estableció los colores una vez y después de eso no reaccionó cada vez que cambió.
¡Gracias por tu ayuda! :)
EDITAR:
Bastante seguro de que lo que intenté antes no funcionó fue esto:
function! StatuslineModeColor()
let s:StatuslineMode=mode()
if s:StatuslineMode == 'n'
hi Statusline ctermbg=blue guibg=blue
elseif s:StatuslineMode == 'i'
hi Statusline ctermbg=red guibg=red
endif
endfunc
Y en la línea de estado pongo lo siguiente:
let &stl.='%{StatuslineModeColor()}'
EDIT 2:
Me he dado cuenta de que, básicamente, lo que necesito hacer es encontrar una manera de captar los colores que el tema usaba antes. Eso es si uso esta solución:http://www.reddit.com/r/vim/comments/gexi6/a_smarter_statusline_code_in_comments/c1n2oo5
Sin embargo, esta solución no es ideal en mis estándares, porque no está limpia o tan limpia como podría ser, ya que hace mucho desorden. : /