vim 中 shell 脚本的错误语法突出显示
Wrong syntax highlight for shell script in vim
我是 vim 和 shell 脚本的新手。我不确定是否存在真正的问题,或者只是我不理解 vim 或 shell 脚本,但我搜索了 google 并没有得到任何答案。无论如何,这就是我在 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
不会立即修复模式。您需要 save/exit 文件,然后再次打开它,以切换到 bash 模式。 (或者使用本段上方的技巧。)
我是 vim 和 shell 脚本的新手。我不确定是否存在真正的问题,或者只是我不理解 vim 或 shell 脚本,但我搜索了 google 并没有得到任何答案。无论如何,这就是我在 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
不会立即修复模式。您需要 save/exit 文件,然后再次打开它,以切换到 bash 模式。 (或者使用本段上方的技巧。)