:set
est utilisé pour les options internes et gère les types d'options. Il permet des choses comme l'inversion des options booléennes (par exemple :set invpaste
) en ajoutant et en supprimant des paramètres d'une liste (par exemple :set dictionary-=/tmp/myfile
).
:let
, d'autre part, permet d'accéder à une pléthore de choses modifiables dans vim, y compris les variables régulières, les options, les registres, etc. et la valeur définie est le résultat de l'évaluation d'une expression, au lieu d'une simple valeur comme avec :set
, ce qui signifie :let
vous donne accès aux mathématiques, à la manipulation de chaînes et aux fonctions.
Par exemple, vous pouvez :let &dictionary=/tmp/myfile
définir l'option 'dictionary'
sur /tmp/myfile
(modifiant ainsi la même option indiquée ci-dessus dans l' :set
exemple)
Vous pouvez définir une variable globale avec :let g:myvar=42
. Le préfixe sur lequel vous vous êtes renseigné fournit une portée. La réponse de la poignée de porte couvre très bien la portée.
Vous pouvez :let @a="Some text"
changer le contenu du registre a à contenir Some text
, que vous pourrez ensuite coller avec "ap
par exemple.
Vous pouvez :let $PATH = $PATH . ":/home/me/bin"
ajouter votre propre répertoire bin à la PATH
variable d'environnement, qui est passée à toutes les commandes externes exécutées par Vim (cela fonctionne pour n'importe quelle variable d'environnement).
Bien qu'il let
possède des capacités assez puissantes (comme :let $MYFILE = @%
définir une variable d'environnement sur le nom de fichier du tampon actuel), il ne sait pas qu'un paramètre est un booléen, donc il n'offre pas de bons accès ou de vérification d'erreur comme le :set
fait le fait.
En fin de compte, il s'agit d'utiliser le meilleur outil pour le travail. Si vous souhaitez simplement modifier une option, :set
c'est votre outil. Si vous souhaitez déplacer des informations entre les registres, les options, les variables ou baser votre valeur sur le résultat d'une expression, :let
c'est votre outil.
Bien que vous ayez explicitement posé des questions sur Vim, une autre chose à noter est que :set
c'est plus courant dans les familles vi / Vim, où :let
c'est moins courant (par exemple, nvi n'a pas de let
commande, et viemu ne donne pas accès aux registres via let
) .
let
en faisantlet &{option name}=value