bash - vim 红色高亮 $( )

标签 bash vim ubuntu sh

当我决定将函数移动到 lib 文件时,我正在编写脚本,但是当我打开 lib 文件时,所有的 $( 和连续的 ) 都是红色突出显示,这里是一些脚本示例

TAB="$(printf '\t')"
percent=$(echo "scale=2; $number/$total*100" | bc | sed -e 's/\.[[:digit:]]*//g')
if [[ -z $(grep $site/post $max_lim) ]];then

文件类型是 conf 但我在 .vimrc 中将其设置为 sh 语法

知道发生了什么吗?

谢谢


编辑:感谢您的快速回答,我发现这一行使 vim 匹配具有 * 后面指定扩展名的文件,语法为 sh

au BufReadPost * set syntax=sh

我还认为在库中使用 shebang 是不允许的,但这是一个不错的解决方案

无论如何在 .vimrc 中使用 g:is_bash 都会返回找不到模式的错误

所以我想做的是因为我只用 bash 编写,让 vim 将任何没有扩展名的文件识别为 bash

最佳答案

sh 的语法文件实际上处理了几种不同类型的 shell 语法:bashksh 和普通的 sh。由于您的 conf 文件未被识别为 bashksh,因此它会返回到 sh$(...) 不是 sh 中的有效构造,因此它被突出显示为错误。

要解决这个问题,您可以确保为文件设置了“g:is_bash”,这样 sh 语法脚本就会知道您的文件应该突出显示为 bash 代码。请编辑您的问题以包含您添加到 .vimrc 中的内容,以使该文件使用 sh 语法突出显示。这将使建议设置“g:is_bash”的正确方法变得更容易。

更新:正如 Alok 评论的那样,您应该能够将以下内容添加到文件中

#!/bin/bash

vim 知道要使用的正确语法高亮。

关于bash - vim 红色高亮 $( ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14732651/

相关文章:

ruby-on-rails - Textmate 'Go to symbol' 相当于 Vim

php - 用 Vim 高亮代码块背景

linux - sudo 选项适用于终端,但不适用于 xwindow

php - Ubuntu 在终端输入 'php' 显示很多错误

bash - 使用 Perl 标志的 Grep 模式匹配最多 n 次

bash - 如何设置以毫秒为单位的创建日期和时间?

linux - 如何同时运行两个 bash 脚本而不重复相同的操作?

python - 如何指定 vim 8 的 python dll 所在位置?

tomcat - 无法在 Ubuntu 12.04 中启动 Tomcat

linux - 否定 bash 脚本中的 if 条件