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 ?

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

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.