Risposte:
letassegna un valore a una variabile e setassegna un valore a una delle opzioni interne di Vim.
Ad esempio, useresti
:let mystring='Hello!'
per dichiarare una nuova variabile, ma useresti
:set tabstop=4
o
:set expandtab
per impostare una delle opzioni di Vim.
Vedi anche: :help let, :help set.
g:significa semplicemente una variabile globale. Esistono diversi di questi "spazi dei nomi variabili" :help internal-variables:
(nothing) In a function: local to a function; otherwise: global
|buffer-variable| b: Local to the current buffer.
|window-variable| w: Local to the current window.
|tabpage-variable| t: Local to the current tab page.
|global-variable| g: Global.
|local-variable| l: Local to a function.
|script-variable| s: Local to a |:source|'ed Vim script.
|function-argument| a: Function argument (only inside a function).
|vim-variable| v: Global, predefined by Vim.
:setviene utilizzato per le opzioni interne e gestisce i tipi di opzione. Consente cose come l'inversione di opzioni booleane (ad es. :set invpaste) L'aggiunta e la rimozione di impostazioni da un elenco (ad es :set dictionary-=/tmp/myfile.).
:letd'altra parte, consente l'accesso a una pletora di cose mutevoli in vim, tra cui variabili regolari, opzioni, registri, ecc. e il valore impostato è il risultato della valutazione di un'espressione, invece di un semplice valore come con :set, il che significa :letti dà accesso a matematica, manipolazione di stringhe e funzioni.
Ad esempio, è possibile :let &dictionary=/tmp/myfileimpostare l'opzione 'dictionary'su /tmp/myfile(modificando così la stessa opzione mostrata sopra :setnell'esempio)
È possibile impostare una variabile globale con :let g:myvar=42. Il prefisso di cui hai chiesto fornisce l'ambito. La risposta di Doorknob copre molto bene l'ambito.
È possibile :let @a="Some text"modificare il contenuto del registro a per contenere Some text, che è possibile incollare in seguito con "apad esempio.
È possibile :let $PATH = $PATH . ":/home/me/bin"aggiungere la propria directory bin alla PATHvariabile di ambiente, che viene passata a tutti i comandi esterni eseguiti da Vim (funziona per qualsiasi variabile di ambiente).
Sebbene letabbia alcune capacità piuttosto potenti (come :let $MYFILE = @%impostare una variabile di ambiente sul nome del file del buffer corrente), non sa che un'impostazione è un valore booleano, quindi non offre accessi piacevoli o verifica errori come :setfa.
Alla fine, si tratta di utilizzare lo strumento migliore per il lavoro. Se vuoi semplicemente modificare un'opzione, :setè il tuo strumento. Se vuoi spostare le informazioni tra registri, opzioni, variabili o basare il tuo valore sul risultato di un'espressione, allora :letè il tuo strumento.
Anche se hai chiesto esplicitamente di Vim, un'altra cosa da notare è che :setè più comune nelle famiglie vi / Vim, dove :letè meno comune (ad esempio, nvi non ha un letcomando e viemu non fornisce l'accesso ai registri tramite let) .
letfacendolet &{option name}=value