:sethanya berfungsi dengan opsi, dan jawabannya menunjukkan beberapa contoh penggunaan yang baik.
:letdi sisi lain dapat melakukan hampir semua yang :setdapat dilakukan, ditambah lagi. Itu dapat menetapkan nilai
- sebuah variabel, mis
let vi = 'vim'
- opsi, mis
let &tw = 40
- sebuah register, mis
let @a = $HOME . '/vimfiles'
- variabel lingkungan, mis
let $NOTHING = 'NOTHING'
Perbedaan utama lainnya adalah bahwa sisi kanan :letadalah ekspresi , yang berarti Anda dapat melakukan hal-hal seperti penggabungan string (seperti yang terlihat dalam contoh register saya di atas) dan operasi aritmatika (misalnya let &tw = 40 + 60). Ini juga berarti bahwa Anda harus mengutip nilai jika itu adalah string. :setdi sisi lain membaca nilai kata demi kata.
Lebih mudah digunakan :setdengan opsi walaupun :letbisa juga melakukan sebagian besar, Berikut adalah beberapa perbandingan menggunakan contoh-contoh sehe ("n / a" berarti tidak ada cara untuk melakukannya dengan :let)
:verbose set vs n / a (jangan berpikir ada cara lain untuk mendaftar semua opsi)
:set tw=40vs :let &tw = 40(ya, Anda juga bisa menggunakan steno yang sama let)
:set wrap& vs n / a
:set nowrapvs :let &wrap = 0(untuk opsi boolean, 0 salah dan 1 benar)
:set wrap! vs. :let &wrap = !&wrap
Beberapa contoh lagi
- cetak nilai opsi:
:set formatoptions?vs :echo &formatoptions( lettidak mencetak nilai, tidak seperti set)
menugaskan ke beberapa opsi secara bersamaan:
:set et sw=4 sts=4
vs.
:let [&et, &sw, &sts] = [0, 4, 4]
atur opsi global: setglobal etvslet &g:et = 1
- atur opsi lokal:
setlocal etvs.let &l:et = 1
Lihat :h :setdan :h :letuntuk lebih jelasnya
tl; dr
:sethanya bekerja dengan opsi tetapi sintaksnya jauh lebih sederhana. :letbekerja dengan tidak hanya opsi tetapi juga variabel, register, dan variabel lingkungan. Berbeda dengan :set, sisi kanan :letadalah ekspresi.
:help setdan:help letdan membaca manual?