No sé mucho de la teoría detrás de Vim. Parece que tenemos setalgunas variables y letotras variables. ¿Cuál es la diferencia, y cuándo se requiere uno sobre el otro?
Además, el esquema de colores vim solarizado dice let g:blabla...¿cuál es el significado de g:en este caso?

lethaciendolet &{option name}=value:setse usa para opciones internas y maneja los tipos de la opción. Permite cosas como la inversión de opciones booleanas (p:set invpaste. Ej. ) Agregar y eliminar configuraciones de una lista (p:set dictionary-=/tmp/myfile. Ej .).:let, por otro lado, permite el acceso a una gran cantidad de cosas cambiables en vim, incluidas variables regulares, opciones, registros, etc. y el valor que se establece es el resultado de evaluar una expresión, en lugar de un valor simple como with:set, lo que significa:letle da acceso a matemáticas, manipulación de cadenas y funciones.Por ejemplo, puede
:let &dictionary=/tmp/myfileestablecer la opción'dictionary'en/tmp/myfile(modificando así la misma opción que se muestra arriba en el:setejemplo)Puede establecer una variable global con
:let g:myvar=42. El prefijo que solicitó proporciona alcance. La respuesta de Doorknob cubre muy bien el alcance.Puede
:let @a="Some text"cambiar el contenido del registro a para contenerSome text, que luego podría pegar con,"appor ejemplo.Puede
:let $PATH = $PATH . ":/home/me/bin"agregar su propio directorio bin a laPATHvariable de entorno, que se pasa a cualquier comando externo ejecutado por Vim (esto funciona para cualquier variable de entorno).Aunque
lettiene algunas capacidades bastante poderosas (como:let $MYFILE = @%establecer una variable de entorno para el nombre de archivo del búfer actual), no sabe que una configuración es booleana, por lo que no ofrece buenos accesos o verificación de errores como lo:sethace.Al final, se trata de usar la mejor herramienta para el trabajo. Si desea simplemente modificar una opción,
:setes su herramienta. Si desea mover información entre registros, opciones, variables o basar su valor en el resultado de una expresión, entonces:letes su herramienta.Aunque usted preguntó explícitamente sobre Vim, otra cosa a tener en cuenta es que
:setes más común en las familias vi / Vim, donde:letes menos común (por ejemplo, nvi no tiene unletcomando y viemu no proporciona acceso a los registros a través delet) .fuente