我是 vim 和 shell 脚本的新手。我不确定是否存在真正的问题,或者只是我不理解 vim 或 shell 脚本,但我确实通过谷歌搜索并没有得到答案。无论如何,这就是我在 vim 中执行 shell 脚本时得到的。而且我认为语法突出显示无法正常工作。
filename=$(basename $file)
Vim以红色突出显示$(
和。)
顺便说一句:我在 Mac 上使用 gvim 8.0 并安装了 YCM,如果相关的话。
我是 vim 和 shell 脚本的新手。我不确定是否存在真正的问题,或者只是我不理解 vim 或 shell 脚本,但我确实通过谷歌搜索并没有得到答案。无论如何,这就是我在 vim 中执行 shell 脚本时得到的。而且我认为语法突出显示无法正常工作。
filename=$(basename $file)
Vim以红色突出显示$(
和。)
顺便说一句:我在 Mac 上使用 gvim 8.0 并安装了 YCM,如果相关的话。
这与 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 模式。(或使用本段上方的技巧。)