Pregunta:
vimrc
asignaciones en mi vimrc
para ingresar automáticamente paréntesis cerrados y llaves cuando entro a abrir con inoremap ( ()<esc>i
.
Me gustaría hacer lo mismo para "
y '
, pero solo cuando el cursor actualmente no está dentro de una cadena, ya que dentro de una cadena '
probablemente sea un apóstrofo en lugar de un delimitador de cadena. ¿Cómo puedo hacer esto?
Respuesta:
Un enfoque podría ser utilizar funciones syn*
. Algo como:
fun! Qtx(qt)
let x = synIDattr(synIDtrans(synID(line("."), col("."), 1)), "name")
if x != "String" && x != "Comment" && x != "Constant"
return a:qt . a:qt
endif
return a:qt
endfun
inoremap <silent> <expr> ' Qtx("'")
inoremap <silent> <expr> " Qtx('"')
La idea es aprovechar la sintaxis del búfer en la posición del cursor. Quizás esto pueda resolverse mejor. Pero espero que sea un comienzo.