: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=40
vs :let &tw = 40
(так, ви можете також використовувати ту саму стенограму let
)
:set wrap&
проти н / в
:set nowrap
vs :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 et
vslet &g:et = 1
- встановити локальний варіант:
setlocal et
vslet &l:et = 1
Дивіться :h :set
та :h :let
для отримання додаткової інформації
тл; д-р
:set
працює лише з параметрами, але синтаксис набагато простіший. :let
працює не лише з параметрами, але і зі змінними, регістрами та змінними середовища. На відміну :set
від правої частини :let
- це вираз.
:help set
і:help let
та прочитати керівництво?