nếu khác endeliner


11

Tôi có oneliner này trong tôi vimrcnhưng nó không hoạt động:

if has("patch-7.4.710") | set listchars+=space:· else | set listchars+=trail:· | endif

VIM nói:

E518: Unknown option: else

Bạn có thể giúp tôi được không ?

Câu trả lời:


19

Bạn cần đặt một cái khác |trước khi elsevim sẽ nghĩ rằng lệnh của bạn là set listchars+=space:· elsethay vì hai lệnh riêng biệt. Đó là lý do tại sao bạn nhận được thông báo lỗi: elselà một tùy chọn không xác định cho lệnh set.

Cú pháp đúng như sau:

if has("patch-7.4.710") | set listchars+=space:· | else | set listchars+=trail:· | endif

Tôi đã vật lộn để đặt nơi nào |, trước hay sau else? Bây giờ, tôi bây giờ là cả hai :-D. Cảm ơn rất nhiều :) !
SebMa

2
@SebMa: Hãy nghĩ về cách vim sẽ phân tích mã của bạn nếu nó được viết trên một số dòng: hướng dẫn 1 if has("patch-7.4.710"), hướng dẫn 2 set listchars+=space:·, hướng dẫn 3 else, hướng dẫn 4 set listchars+=trail:·và hướng dẫn cuối cùng endif. Vì |được sử dụng để phân tách các hướng dẫn, nên chỉ đặt một trước elsevà một sau :)
statox

1
Nó hợp lý miễn là người ta biết ngôn ngữ. Trong C, chúng tôi sử dụng ;để hướng dẫn riêng biệt. Trong C elsekhông phải là một hướng dẫn, nếu không sẽ có ;sau đó :)
SebMa

1
Các ngữ nghĩa của VimScript gần với kịch bản shell hơn C @SebMa.
Martin Tournoij

1
@SebMa Không, nhưng ngữ nghĩa của "(hầu hết) mọi thứ bao gồm các cấu trúc điều khiển là một lệnh" tương tự như VimScript (và khác với C).
Martin Tournoij
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.