Saya tidak tahu banyak tentang teori di balik Vim. Sepertinya kita set
beberapa variabel, dan let
variabel lainnya. Apa bedanya, dan kapan yang satu lebih dibutuhkan?
Juga, vich colorscheme solarized mengatakan untuk let g:blabla...
apa pentingnya g:
dalam hal ini?
let
dengan melakukanlet &{option name}=value
: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 mengandungSome text
, yang nantinya bisa Anda tempel dengan"ap
.Anda bisa
:let $PATH = $PATH . ":/home/me/bin"
menambahkan direktori bin Anda sendiri kePATH
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 memilikilet
perintah, dan viemu tidak menyediakan akses ke register melaluilet
) .sumber