:setchỉ hoạt động với các tùy chọn và câu trả lời của sehe giới thiệu một số ví dụ sử dụng tốt.
:letmặt khác có thể làm hầu hết mọi thứ :setcó thể làm, cộng với nhiều hơn nữa. Nó có thể gán giá trị cho
- một biến, vd
let vi = 'vim'
- một lựa chọn, vd
let &tw = 40
- một đăng ký, ví dụ
let @a = $HOME . '/vimfiles'
- một biến môi trường, vd
let $NOTHING = 'NOTHING'
Một sự khác biệt lớn nữa là phía bên phải :letlà một biểu thức , nghĩa là bạn có thể thực hiện những việc như nối chuỗi (như đã thấy trong ví dụ đăng ký của tôi ở trên) và các phép toán số học (ví dụ let &tw = 40 + 60). Điều này cũng có nghĩa là bạn phải trích dẫn giá trị nếu đó là một chuỗi. :setmặt khác đọc nguyên văn giá trị.
Nó dễ sử dụng hơn :setvới các tùy chọn mặc dù :letcũng có thể thực hiện hầu hết các tùy chọn , Dưới đây là một số so sánh sử dụng các ví dụ của sehe ("n / a" có nghĩa là không có cách nào để làm điều đó :let)
:verbose set vs n / a (đừng nghĩ có một cách khác để liệt kê tất cả các tùy chọn)
:set tw=40vs :let &tw = 40(vâng, bạn cũng có thể sử dụng cùng tốc ký let)
:set wrap& so với không
:set nowrapvs :let &wrap = 0(đối với các tùy chọn boolean, 0 là sai và 1 là đúng)
:set wrap! đấu với :let &wrap = !&wrap
Một vài ví dụ nữa
- in giá trị của một tùy chọn:
:set formatoptions?vs :echo &formatoptions( letkhông in giá trị, không giống như set)
gán cho nhiều tùy chọn cùng một lúc:
:set et sw=4 sts=4
đấu với
:let [&et, &sw, &sts] = [0, 4, 4]
đặt tùy chọn toàn cầu: setglobal etvs.let &g:et = 1
- đặt tùy chọn cục bộ:
setlocal etvs.let &l:et = 1
Xem :h :setvà :h :letđể biết thêm chi tiết
tl; dr
:setchỉ hoạt động với các tùy chọn nhưng cú pháp đơn giản hơn nhiều. :letlàm việc với không chỉ các tùy chọn mà còn cả các biến, thanh ghi và biến môi trường. Không giống như :set, phía bên tay phải :letlà một biểu thức.
:help setvà:help letvà đọc hướng dẫn?