Risposte:
let
assegna un valore a una variabile e set
assegna 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.
:set
viene 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
.).
:let
d'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 :let
ti dà accesso a matematica, manipolazione di stringhe e funzioni.
Ad esempio, è possibile :let &dictionary=/tmp/myfile
impostare l'opzione 'dictionary'
su /tmp/myfile
(modificando così la stessa opzione mostrata sopra :set
nell'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 "ap
ad esempio.
È possibile :let $PATH = $PATH . ":/home/me/bin"
aggiungere la propria directory bin alla PATH
variabile di ambiente, che viene passata a tutti i comandi esterni eseguiti da Vim (funziona per qualsiasi variabile di ambiente).
Sebbene let
abbia 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 :set
fa.
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 let
comando e viemu non fornisce l'accesso ai registri tramite let
) .
let
facendolet &{option name}=value