他の場合endifワンライナー


11

私の中にこのワンライナーがありますvimrcが、うまくいきません:

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

VIMさんのコメント:

E518: Unknown option: else

手伝って頂けますか ?

回答:


19

それ以外の場合、vimはコマンドが2つの別々のコマンドではなく、コマンドであると考える|前にelse、もう1つ置く必要がありset listchars+=space:· elseます。これが、エラーメッセージが表示される理由です:elseコマンドの不明なオプションですset

正しい構文は次のとおりです。

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

私はのどこに、どこに置くのに苦労していまし|elseか?今、私は今それは両方です:-D。どうもありがとう :) !
SebMa 2017

2
@SebMa:コードが複数行に記述されている場合、vimがコードを解析する方法を考えてください:命令1 if has("patch-7.4.710")、命令2 set listchars+=space:·、命令3 else、命令4 set listchars+=trail:·、最後の命令endif|は命令を分離するために使用されるため、前後elseに1つずつ置くのが論理的です:)
statox

1
言語を知っている限り、論理的です。Cでは、;命令を分離するために使用します。C elseでは命令ではありません、そうでなければそれの;後にあります:)
SebMa

1
VimScriptのセマンティクスは、C @SebMaよりもシェルスクリプトにかなり近いです。
Martin Tournoij 2017

1
@SebMaいいえ、ただし「制御構造を含むすべてのものがコマンドである」のセマンティクスはVimScriptに似ています(Cとは異なります)。
Martin Tournoij 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.