Let ve set arasındaki fark nedir?


29

Vim'in arkasındaki teorinin çoğunu bilmiyorum. setBazı değişkenler ve letdiğer değişkenler gibi görünüyor . Aradaki fark nedir ve biri diğerine ne zaman ihtiyaç duyar?

Ayrıca, solarize vim colorscheme, bu örnekteki öneminin let g:blabla...ne olduğunu söylüyor g:?

Yanıtlar:


35

letbir değişkene setbir değer atar ve Vim'in iç seçeneklerinden birine bir değer atar.

Mesela kullanırdın

:let mystring='Hello!'

yeni bir değişken bildirmek için

:set tabstop=4

veya

:set expandtab

Vim'in seçeneklerinden birini ayarlamak için.

Ayrıca bakınız: :help let, :help set.

g:sadece global bir değişkeni işaret eder. Bunlardan birçoğu "değişken ad alanları" vardır :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.

8
Vim'in iç seçeneklerini kullanarak aşağıdakileri yapabileceğinizi unutmayın let:let &{option name}=value
EvergreenTree

11

:setdahili seçenekler için kullanılır ve seçeneğin türlerini işler. Bir boole seçeneklerinin tersine çevrilmesi gibi şeylere izin verir (örn. :set invpaste) Listeye ayar ekleme ve çıkarma (örn. :set dictionary-=/tmp/myfile).

:letÖte yandan, bunun yerine sahip gibi basit bir değerin, vb düzenli değişkenler, seçenekler, kayıtlar ve değerini sette dahil vim değiştirilebilir şeyler, bir bolluk erişimi ifadenin değerlendirme sonucu verir :setki araçlarla :letmatematik, string manipülasyon ve fonksiyonlara erişmenizi sağlar.

Örneğin, şunları yapabilirsiniz :let &dictionary=/tmp/myfileseçeneği belirlemek için 'dictionary'için /tmp/myfile(dolayısıyla yukarıda gösterilen aynı seçeneği değiştirerek :setörneğin)

İle genel bir değişken ayarlayabilirsiniz :let g:myvar=42. İstediğiniz önek kapsam sağlar. Doorknob'un cevabı kapsamı çok iyi kapsar.

A :let @a="Some text"kaydının içeriğini, örneğin Some textsonradan yapıştırabileceğiniz, değiştirebilirsiniz "ap.

Şunları yapabilirsiniz :let $PATH = $PATH . ":/home/me/bin"kendi bin dizini eklemek için PATH(bu herhangi ortam değişkeni için çalışır) Vim tarafından yürütülen herhangi bir dış komutları geçirilir ortam değişkeni.

letOldukça güçlü yetenekleri olmasına rağmen ( :let $MYFILE = @%bir ortam değişkenini mevcut tamponun dosya adına göre ayarlamak gibi ), bir ayarın bir boolean olduğunu bilmediğinden, hoş erişim veya hata denetimi gibi bir :setşey sunmuyor.

Sonunda, iş için en iyi aracı kullanmakla ilgili. Bir seçeneği basitçe değiştirmek istiyorsanız :set, aracınızdır. Bilgileri kayıtlar, seçenekler, değişkenler arasında hareket ettirmek veya değerinizi bir ifadenin sonucuna dayandırmak istiyorsanız :let, aracınız olur.

Açıkça Vim'den sorulmasına rağmen, dikkat edilmesi gereken diğer bir husus :set, vi / Vim ailelerinde :letdaha yaygın olduğu , daha az yaygın olduğu (örneğin, nvi'nin bir letkomutu olmadığı ve viemu'nun kayıtlara erişim sağlamadığı let). .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.