如果不是endif oneliner


11

我的内胆里有这个,vimrc但它不起作用:

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

VIM说:

E518: Unknown option: else

你能帮助我吗 ?

Answers:


19

您需要先放置另一个|else否则vim会认为您的命令set listchars+=space:· else代替了两个单独的命令。这就是为什么您收到错误消息的原因:else该命令的未知选项set

正确的语法如下:

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

我正在努力将其放置在|之前或之后的位置else?现在,我现在都是:-D。非常感谢 :) !
SebMa

2
@SebMa:考虑一下如果vim是在多行代码上编写的,那么vim将如何解析您的代码:指令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 '17

1
VimScript的语义比C @SebMa更接近于外壳脚本。
马丁·图尔诺伊

1
@SebMa不,但是“(几乎所有东西,包括控制结构都是命令)”的语义与VimScript相似(与C有所不同)。
马丁·图尔诺伊
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.