Jawaban:
let
memberikan nilai ke variabel, dan set
memberikan nilai ke salah satu opsi internal Vim.
Misalnya, Anda akan menggunakan
:let mystring='Hello!'
untuk mendeklarasikan variabel baru, tetapi Anda akan menggunakan
:set tabstop=4
atau
:set expandtab
untuk mengatur salah satu opsi Vim.
Lihat juga: :help let
, :help set
.
g:
hanya menandakan variabel global. Ada beberapa "ruang nama variabel" ini —dari :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
digunakan untuk opsi internal dan menangani jenis opsi. Ini memungkinkan hal-hal seperti inversi opsi boolean (misalnya :set invpaste
) menambah dan menghapus pengaturan dari daftar (misalnya :set dictionary-=/tmp/myfile
).
:let
, di sisi lain, memungkinkan akses ke banyak hal yang dapat diubah dalam vim, termasuk variabel reguler, opsi, register, dll. dan nilai yang ditetapkan adalah hasil dari mengevaluasi ekspresi, bukan nilai sederhana seperti dengan :set
, yang berarti :let
memberi Anda akses ke matematika, manipulasi string, dan fungsi.
Misalnya, Anda dapat :let &dictionary=/tmp/myfile
mengatur opsi 'dictionary'
ke /tmp/myfile
(sehingga memodifikasi opsi yang sama seperti yang ditunjukkan di atas dalam :set
contoh)
Anda dapat mengatur variabel global dengan :let g:myvar=42
. Awalan yang Anda tanyakan tentang menyediakan cakupan. Jawaban Doorknob mencakup pelingkupan dengan sangat baik.
Anda dapat :let @a="Some text"
mengubah konten register menjadi mengandung Some text
, yang nantinya bisa Anda tempel dengan "ap
.
Anda bisa :let $PATH = $PATH . ":/home/me/bin"
menambahkan direktori bin Anda sendiri ke PATH
variabel lingkungan, yang diteruskan ke perintah eksternal yang dijalankan oleh Vim (ini berfungsi untuk variabel lingkungan apa pun).
Meskipun let
memiliki beberapa kemampuan yang sangat kuat (seperti :let $MYFILE = @%
untuk mengatur variabel lingkungan ke nama file buffer saat ini), ia tidak tahu bahwa pengaturan adalah boolean, sehingga tidak menawarkan akses yang bagus atau pengecekan kesalahan seperti :set
halnya.
Pada akhirnya, ini tentang menggunakan alat terbaik untuk pekerjaan itu. Jika Anda hanya ingin memodifikasi opsi, :set
adalah alat Anda. Jika Anda ingin memindahkan informasi antara register, opsi, variabel, atau mendasarkan nilai Anda pada hasil ekspresi, maka itu :let
adalah alat Anda.
Meskipun Anda secara eksplisit bertanya tentang Vim, hal lain yang perlu diperhatikan adalah yang :set
lebih umum di keluarga vi / Vim, di mana :let
kurang umum (misalnya, nvi tidak memiliki let
perintah, dan viemu tidak menyediakan akses ke register melalui let
) .
let
dengan melakukanlet &{option name}=value