:setオプションでのみ機能し、seheの回答はいくつかの良い使用例を示しています。
:let一方、できることのほとんどすべて:setに加えて、それ以上のことができます。値を割り当てることができます
- 変数、例えば
let vi = 'vim'
- オプション、例えば
let &tw = 40
- レジスタ、例えば
let @a = $HOME . '/vimfiles'
- 環境変数、例えば
let $NOTHING = 'NOTHING'
もう1つの大きな違いは、の右側:letが式であることです。つまり、上記のレジスタの例にあるように、文字列連結や算術演算(などlet &tw = 40 + 60)を実行できます。これは、文字列の場合は値を引用する必要があることも意味します。:set一方、値を逐語的に読み取ります。
ほとんどのことを実行でき:setますが、オプションを使用する方が簡単です:let。以下は、seheの例を使用した比較です( "n / a"は、これを使用する方法がないことを意味します:let)。
:verbose set vs n / a(すべてのオプションをリストする別の方法があるとは思わない)
:set tw=40vs :let &tw = 40(はい、同じ省略形を使用することもできますlet)
:set wrap& vs n / a
:set nowrapvs :let &wrap = 0(ブールオプションの場合、0はfalse、1はtrueです)
:set wrap! 対 :let &wrap = !&wrap
さらにいくつかの例
- オプションの値を出力します:
:set formatoptions?vs :echo &formatoptions(とletは異なり、値を出力しませんset)
同時に複数のオプションに割り当てる:
:set et sw=4 sts=4
対
:let [&et, &sw, &sts] = [0, 4, 4]
グローバルオプションを設定:setglobal etvslet &g:et = 1
- ローカルオプションを設定:
setlocal etvslet &l:et = 1
詳細を参照:h :setし:h :letてください
tl; dr
:setオプションでのみ機能しますが、構文ははるかに単純です。:letオプションだけでなく、変数、レジスタ、環境変数でも機能します。とは異なり:set、の右側:letは式です。
:help setと:help let、マニュアルを読みますか?