Відповіді:
let
призначає значення змінній та set
присвоює значення одному з внутрішніх параметрів Vim.
Наприклад, ви б використали
:let mystring='Hello!'
оголосити нову змінну, але ви б використали
:set tabstop=4
або
:set expandtab
встановити один із варіантів Vim.
Дивіться також: :help let
, :help set
.
g:
просто означає глобальну змінну. Існує кілька таких "змінних просторів імен" --від :help internal-variables
:
(nothing) In a function: local to a function; otherwise: global
|buffer-variable| b: Local to the current buffer.
|window-variable| w: Local to the current window.
|tabpage-variable| t: Local to the current tab page.
|global-variable| g: Global.
|local-variable| l: Local to a function.
|script-variable| s: Local to a |:source|'ed Vim script.
|function-argument| a: Function argument (only inside a function).
|vim-variable| v: Global, predefined by Vim.
:set
використовується для внутрішніх опцій та обробляє типи опції. Це дозволяє такі речі, як інверсія булевих параметрів (наприклад :set invpaste
) додавання та видалення параметрів зі списку (наприклад :set dictionary-=/tmp/myfile
).
:let
з іншого боку, дозволяє отримати доступ до безлічі змінних речей у vim, включаючи регулярні змінні, параметри, регістри тощо. Значення, яке встановлюється, є результатом оцінки виразу, а не простого значення, наприклад, з :set
, яке означає :let
надає вам доступ до математики, маніпулювання струнами та функцій.
Наприклад, ви можете :let &dictionary=/tmp/myfile
встановити опцію 'dictionary'
до /tmp/myfile
(таким чином , змінюючи один і той же варіант , показаний вище в :set
прикладі)
Ви можете встановити глобальну змінну за допомогою :let g:myvar=42
. Префікс, про який ви запитували, містить область. Відповідь Дорноба дуже добре висвітлює підбір результатів.
Ви можете :let @a="Some text"
змінити вміст регістру a на вміст Some text
, до якого згодом ви могли вставити, "ap
наприклад.
Ви можете :let $PATH = $PATH . ":/home/me/bin"
додати свій власний каталог бін до PATH
змінної середовища, який передається будь-яким зовнішнім командам, виконаним Vim (це працює для будь-якої змінної середовища).
Хоча let
має деякі досить потужні здібності (як, наприклад, :let $MYFILE = @%
встановлення змінної середовища для імені файлу поточного буфера), він не знає, що налаштування є булевим, тому він не пропонує приємного доступу або перевірки помилок, як :set
це робиться.
Зрештою, мова йде про використання найкращого інструменту для роботи. Якщо ви хочете просто змінити варіант, :set
це ваш інструмент. Якщо ви хочете переміщувати інформацію між регістрами, опціями, змінними або базувати своє значення на результаті вираження, то :let
це ваш інструмент.
Хоча ви прямо запитували про Vim, слід зазначити ще одне, що :set
частіше зустрічається у сім'ях vi / Vim, де :let
рідше (наприклад, nvi не має let
команди, а viemu не забезпечує доступ до регістрів через let
) .
let
роблячиlet &{option name}=value