: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&
vs n / a
:set nowrap
vs :let &wrap = 0
(สำหรับตัวเลือกบูลีน 0 เป็นเท็จและ 1 เป็นจริง)
:set wrap!
VS :let &wrap = !&wrap
อีกไม่กี่ตัวอย่าง
- พิมพ์ค่าของตัวเลือก:
:set formatoptions?
vs :echo &formatoptions
( let
ไม่พิมพ์ค่าเหมือนset
)
กำหนดให้กับหลายตัวเลือกในเวลาเดียวกัน:
:set et sw=4 sts=4
VS
:let [&et, &sw, &sts] = [0, 4, 4]
ตั้งค่าตัวเลือกทั่วโลก: setglobal et
vslet &g:et = 1
- ตั้งค่าตัวเลือกในท้องถิ่น:
setlocal et
vslet &l:et = 1
ดู:h :set
และ:h :let
สำหรับรายละเอียดเพิ่มเติม
TL; DR
:set
ใช้ได้กับตัวเลือกเท่านั้น แต่ไวยากรณ์นั้นง่ายกว่ามาก :let
ทำงานร่วมกับตัวเลือกที่ไม่เพียง แต่ยังตัวแปรลงทะเบียนและตัวแปรสภาพแวดล้อม ไม่เหมือนกับ:set
ด้านขวามือของ:let
นิพจน์
:help set
และ:help let
และอ่านคู่มือการใช้งาน?