ถ้าอื่น endif oneliner


11

ฉันมีออนไลเนอร์ตัวนี้อยู่vimrcแต่ไม่ได้ผล:

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

VIM พูดว่า:

E518: Unknown option: else

คุณสามารถช่วยฉันได้ไหม ?

คำตอบ:


19

คุณต้องใส่คำสั่ง|ก่อนelseอื่นมิฉะนั้นจะคิดว่าคำสั่งของคุณคือset listchars+=space:· elseแทนที่จะใช้สองคำสั่งแยกกัน นั่นเป็นเหตุผลที่คุณได้รับข้อความแสดงข้อผิดพลาด: เป็นตัวเลือกที่ไม่รู้จักคำสั่งelseset

ไวยากรณ์ที่ถูกต้องมีดังต่อไปนี้:

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

ฉันกำลังดิ้นรนกับสถานที่ที่ฉันจะวาง|ก่อนหรือหลังelse? ตอนนี้ฉันทั้งสอง :-D ขอบคุณมาก :) !
SebMa

2
@SebMa: คิดว่าเป็นกลุ่มจะแยกรหัสของคุณถ้ามันถูกเขียนขึ้นหลายต่อหลายสาย: การเรียนการสอน 1 if has("patch-7.4.710")คำแนะนำ 2 set listchars+=space:·คำแนะนำ 3 elseคำแนะนำและ 4 และการสอนที่ผ่านมาset listchars+=trail:· endifในฐานะที่|จะใช้ในการคำแนะนำที่แยกจากกันมันเป็นตรรกะเดียวที่จะใส่หนึ่งก่อนelseและหนึ่งหลังจาก :)
statox

1
มันเป็นตรรกะตราบใดที่คนรู้ภาษา ใน C เราใช้;เพื่อแยกคำแนะนำ ใน C elseไม่ได้เป็นคำสั่งมิฉะนั้นจะมี;หลังจากที่มัน :)
SebMa

1
ความหมายของ VimScript นั้นใกล้กับเชลล์สคริปต์มากกว่า C @SebMa
Martin Tournoij

1
@SebMa ไม่ แต่ความหมายของ "(เกือบ) ทุกอย่างรวมถึงโครงสร้างการควบคุมเป็นคำสั่ง" จะคล้ายกับ VimScript (และแตกต่างจาก C)
Martin Tournoij
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.