: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=40
vs :let &tw = 40
(はい、同じ省略形を使用することもできますlet
)
:set wrap&
vs n / a
:set nowrap
vs :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 et
vslet &g:et = 1
- ローカルオプションを設定:
setlocal et
vslet &l:et = 1
詳細を参照:h :set
し:h :let
てください
tl; dr
:set
オプションでのみ機能しますが、構文ははるかに単純です。:let
オプションだけでなく、変数、レジスタ、環境変数でも機能します。とは異なり:set
、の右側:let
は式です。
:help set
と:help let
、マニュアルを読みますか?