kalau lagi endif oneliner

11

Saya memiliki oneliner ini di komputer saya vimrctetapi tidak berfungsi:

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

VIM mengatakan:

E518: Unknown option: else

Bisakah kamu membantuku ?

SebMa
sumber

Jawaban:

19

Anda perlu meletakkan yang lain |sebelum elsevim akan menganggap perintah Anda set listchars+=space:· elsebukan dua perintah terpisah. Itu sebabnya Anda mendapat pesan kesalahan: elseadalah opsi yang tidak diketahui untuk perintah set.

Sintaks yang benar adalah sebagai berikut:

if has("patch-7.4.710") | set listchars+=space:· | else | set listchars+=trail:· | endif
statox
sumber
Saya berjuang di mana saya akan meletakkan |, sebelum atau sesudah else? Sekarang, saya sekarang keduanya :-D. Terima kasih banyak :) !
SebMa
2
@SebMa: Pikirkan bagaimana vim akan mem-parsing kode Anda jika ditulis pada beberapa baris: instruksi 1 if has("patch-7.4.710"), instruksi 2 set listchars+=space:·, instruksi 3 else, instruksi 4 set listchars+=trail:·dan instruksi terakhir endif. Karena |digunakan untuk memisahkan instruksi, masuk akal untuk meletakkan satu sebelum elsedan satu setelah :)
statox
1
Itu logis asalkan orang tahu bahasa. Di C, kami menggunakan ;untuk memisahkan instruksi. Dalam C elsebukan instruksi, kalau tidak akan ada ;setelahnya :)
SebMa
1
Semantik VimScript jauh lebih dekat dengan shell scripting daripada C @SebMa.
Martin Tournoij
1
@SebMa Tidak, tetapi semantik "(hampir) semuanya termasuk struktur kontrol adalah sebuah perintah" mirip dengan VimScript (dan berbeda dari C).
Martin Tournoij