Quiero crear un fragmento que imprima el valor de una variable con fines de depuración. esto es lo que se me ocurrió:
{ "Debug": { "prefix": ["db"], "body": ["console.log(\"$1 :\", $1)"] } }Cuando uso este fragmento, el cursor va entre comillas ( | es la posición del cursor):
console.log("| :",)Y después de escribir el nombre de una variable, copia el nombre en el segundo parámetro:
console.log("name :", name)Pero no puedo usar el autocompletado en cadenas. a veces, la variable es un objeto y la finalización automática me ayuda a elegir una clave específica del objeto. Quiero que el cursor se detenga en el segundo parámetro para poder usar el autocompletado:
console.log(" :", |)Y todo lo que escriba debe copiarse entre comillas dobles:
console.log("name :", name)como el ejemplo anterior pero al revés.
¿Cómo puedo hacer eso?
ACTUALIZACIÓN: creé un problema: https://github.com/microsoft/vscode/issues/142327
Probé con la siguiente versión:
{ "Debug": { "prefix": ["db"], "body": ["console.log(\"${2:$1} :\", $1);$0"] } }Comienza en $1, pero inmediatamente también muestra el texto para $2, con TAB puedo cambiar el texto entre comillas dobles pero no obtengo el autocompletado para $1.
Creo que esto debería preguntarse en un problema en el repositorio. $2 debe copiar el texto de $1 después de la TAB y $1 debe tener autocompletado como lo hace cuando se usa
{ "Debug": { "prefix": ["db"], "body": ["console.log(\"$2 :\", $1);$0"] } }Supongo que tiene Editor > Suggest: Snippets Prevent Quick Suggestions deshabilitado y
"editor.quickSuggestions": { "other": true, "comments": true, "strings": true // the important one here }, En mis pruebas, incluso con esa configuración, todavía no funciona. Eso parece un error. Falla incluso en el caso más simple "\"$1\" $1" . Entonces, algo acerca de estar en una cadena impide la inteligencia a pesar de la configuración anterior.
Pero hay una solución :
"Debug": { "prefix": ["db"], "body": [ // select everything you want to surround with quotes "console.log(${2:$1 :}, $1)" // you will get intellisense ] } El ${2:...} seleccionará el resultado de tabstop 1 + : y luego puede presionar " para rodear esa selección con comillas. Solo tiene que presionar una tab más de lo que podría estar esperando.