Tại sao runtimepath trong vim không thể được đặt làm biến


4

Tôi đã chỉ định .vimrc.vim vị trí.

trong tôi tập tin vimrc , Tôi đã tìm thấy runtimepath có thể được đặt là một giá trị tuyệt đối thích:

set rtp+=~/.marslo/.vim/bundle/vundle

Nhưng nó KHÔNG THỂ được đặt làm một biến , thích:

let vudpath = expand(~/.marslo/.vim/bundle/vundle)
set rtp+=vudpath

Tại sao vậy Có cách nào có thể làm runtimepath được đặt làm biến?

Câu trả lời:


7

Như romainl đã nói, bạn có :let &option. Nhưng trong trường hợp của bạn, khi bạn muốn thêm một đường dẫn vào danh sách các đường dẫn thì đó sẽ là:

exe 'set rtp+=' . expand('~/.marslo/.vim/bundle/vundle')

Điều đó sẽ chỉ thêm đường dẫn nếu nó chưa xuất hiện trong & amp; rtp.

Hoặc (lưu ý việc sử dụng .= toán tử thay vì += một)

let &rtp .= ','.expand('~/.marslo/.vim/bundle/vundle')

Tuy nhiên lần này nếu nó đã có trong & amp; rtp của bạn, nó sẽ được thêm lại. Vì vậy, thích sử dụng :execute + :set trong trường hợp cụ thể của bạn.


Bạn thật tuyệt vời!!! Hai cách là tất cả công việc cho tôi !!! Cảm ơn rất nhiều!
Marslo

3
Điều không được nói ở đây, là vấn đề của bạn không liên quan gì đến "hãy để". Hầu hết các lệnh ex KHÔNG mở rộng tên biến, tức là chúng không có biểu thức. "set" không phải là một trong những lệnh mở rộng biểu thức (biến).
Ben

0

Bạn có hai lựa chọn:

execute "set option=" . expression
let &option = expression

Nếu let &option = expression, tại sao gọi vundle # bắt đầu (chồi) hoạt động tốt?
Marslo

Được rồi, ý bạn là, nếu tùy chọn sử dụng += Phương pháp nào thì giá trị CANNOT có thể thay đổi?
Marslo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.