: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=40vs :let &tw = 40(ใช่คุณสามารถใช้ชวเลขเดียวกันได้letด้วย)
:set wrap& vs n / a
:set nowrapvs :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 etvslet &g:et = 1
- ตั้งค่าตัวเลือกในท้องถิ่น:
setlocal etvslet &l:et = 1
ดู:h :setและ:h :letสำหรับรายละเอียดเพิ่มเติม
TL; DR
:setใช้ได้กับตัวเลือกเท่านั้น แต่ไวยากรณ์นั้นง่ายกว่ามาก :letทำงานร่วมกับตัวเลือกที่ไม่เพียง แต่ยังตัวแปรลงทะเบียนและตัวแปรสภาพแวดล้อม ไม่เหมือนกับ:setด้านขวามือของ:letนิพจน์
:help setและ:help letและอ่านคู่มือการใช้งาน?