:setпрацює лише з опціями, а відповідь sehe демонструє кілька хороших прикладів використання.
:letз іншого боку, можна зробити майже все, що :setможна зробити, плюс більше. Він може призначити значення
- змінна, наприклад
let vi = 'vim'
- варіант, наприклад
let &tw = 40
- реєстр, наприклад
let @a = $HOME . '/vimfiles'
- змінна середовище, наприклад
let $NOTHING = 'NOTHING'
Інша основна відмінність полягає в тому, що права сторона :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& проти н / в
:set nowrapvs :let &wrap = 0(для булевих варіантів 0 - помилково, а 1 - правда)
: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для отримання додаткової інформації
тл; д-р
:setпрацює лише з параметрами, але синтаксис набагато простіший. :letпрацює не лише з параметрами, але і зі змінними, регістрами та змінними середовища. На відміну :setвід правої частини :let- це вираз.
:help setі:help letта прочитати керівництво?