我在vimrc中有这个oneliner,但是它不起作用:

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


VIM说:

E518: Unknown option: else


你能帮我吗?

#1 楼

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

正确的语法如下:

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


评论


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

–SebMa
17年9月11日在9:52

@SebMa:考虑一下如果vim是在多行代码上编写的,vim将如何解析您的代码:指令1 if has(“ patch-7.4.710”),指令2设置listchars + = space:·,指令3否则,指令4设置listchars + = trail:·,最后一条指令为endif。作为|用于分隔指令,将一个放在另一个之前然后放在一个后面是合理的:)

–statox♦
17年9月11日在9:58

只要知道一种语言就合乎逻辑。在C中,我们使用;分开指示。在C中,否则不是指令,否则将有一个;之后:)

–SebMa
17年9月11日在10:02



VimScript的语义比C @SebMa更接近于外壳脚本。

–马丁·图尔诺伊(Martin Tournoij)
17年9月11日上午10:31

@SebMa否,但是“(几乎)包括控制结构在内的所有内容都是命令”的语义与VimScript相似(与C有所不同)。

–马丁·图尔诺伊(Martin Tournoij)
17年9月11日在12:23