2

我是 vim 和 shell 脚本的新手。我不确定是否存在真正的问题,或者只是我不理解 vim 或 shell 脚本,但我确实通过谷歌搜索并没有得到答案。无论如何,这就是我在 vim 中执行 shell 脚本时得到的。而且我认为语法突出显示无法正常工作。

看图片点击这里

filename=$(basename $file)

Vim以红色突出显示$(和。)

顺便说一句:我在 Mac 上使用 gvim 8.0 并安装了 YCM,如果相关的话。

4

1 回答 1

13

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

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

在此处输入图像描述

顶级版本只是您在屏幕截图中发布的代码。默认情况下,它使用 posix shell 模式,您可以看到红色高亮显示。

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

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

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

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

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

于 2017-04-09T02:37:44.003 回答