虽然在vim中没有正确突出显示bash脚本中while循环的循环

时间:2013-06-04 10:03:22

标签: bash shell vim syntax-highlighting

我试图在bash中的一个while循环中编写while循环,而第二个的语法不会突出显示。有没有使用它的特殊语法?

while [ "ka" = $name ] 
do 
  while [ "ka" = $name ] //this while is not highlighted
  do
  done
done

3 个答案:

答案 0 :(得分:3)

正如其他答案已经指出的那样,这是语法插件中的一个错误,它会影响非Bash shell语法。

请向脚本的作者Charles Campbell提交错误报告(基本上是此页面的链接);他的电子邮件地址在脚本的标题中;该脚本位于Vim安装目录中的syntax/sh.vim

如果您没有得到回复,请通知vim_dev邮件列表(cp。http://www.vim.org/community.php;您需要先注册)关于此;希望有人会接受它。

解决方法

作为一种变通方法,您可以默认强制使用Bash语法(在~/.vimrc中):

:let g:is_bash      = 1

答案 1 :(得分:2)

你是对的。出于某种原因,如果shebang行指向while,则 VIm 7.3仅突出显示嵌套bash命令。例如,以任何这些开头的文件都会正确突出显示:< / p>
#!/usr/bin/env bash
#!/usr/bin/bash
#!/bin/bash

但不是没有shebang线或以下几行:

#!/bin/sh
#!/usr/bin/env sh

测试文件:

[shebang line]
while true
do
    while true
    do
        while true
        do
            :
        done
    done
done
在所有情况下,

:set filetype?都会打印filetype=sh,所以看起来这是一个错误。

答案 2 :(得分:1)

尝试以下脚本。它对我有用

#!/bin/bash
i="1"
while [ $i -lt 4 ]
do
        j="1"
        while [ $j -lt 4 ]
        do
                echo $i
                j=$[$j+1]
        done
        i=$[$i+1]
done

它的输出是

1
1
1
2
2
2
3
3
3

正如所料。

问题可能是您在此处发布的代码之前的代码,因为我无法在代码中找到语法错​​误。