2017-04-08 126 views
1

我是vim和shell脚本的新手。我不确定是否存在真正的问题,或者只是我不了解vim或shell脚本,但是我通过google进行了搜索并没有得到任何答案。无论如何,这是我在vim中执行shell脚本时得到的结果。我认为语法突出显示不能正常工作。vim中shell脚本的错误语法高亮

See image click here

filename=$(basename $file) 

Vim高亮的红色的$()

顺便说一句:我在Mac上使用gvim 8.0并且安装了YCM(如果它是相关的)。

+0

对不起,但你为什么说它不工作?似乎在图像中工作 – sidyll

+0

Hi @sidyll所以我在想我的代码中没有任何语法错误但是vim确实突出显示了我的一些红色代码(如图所示)。你的意思是说我有语法错误吗?我的脚本在我的labtop上正常工作。 –

+0

对我来说,这只是你的颜色配方:)你试过另一个吗? – sidyll

回答

3

这与Vim的shell语法的行为有关。它有三种模式:posix shell,ksh和bash。您正在使用bash语法,但Vim将其渲染为posix shell(默认值)。

这是Vim 8.0中这段代码的3个不同版本的屏幕截图。

enter image description here

顶级版只是你在你的屏幕截图发布的代码。默认情况下,它使用posix shell模式,并且您可以看到存在红色高光。

在中间版本中,我已将#!/bin/sh添加到文件的开头。这仍然处于posix模式,仍然有红色高光。

在底部,你可以看到我切换到#!/bin/bash。这会触发bash行为,现在您可以看到特定于bash的语法不再被标记为错误。

#!行用于自动检测文件类型。但是,如果缺失,如果您愿意,仍然可以强制使用该模式。

:let b:is_bash=1 
:set ft=sh 

请注意,打开文件时会设置模式。因此,添加#!/bin/bash不会立即修复该模式。您需要保存/退出文件,然后再次打开,切换到bash模式。 (或使用本段上面的技巧。)

+0

伟大的学习!你太棒了。 –