bash脚本中的while循环不是';t在vim中正确突出显示
我试图在bash中的一个while循环中编写一个while循环,第二个while的语法不会突出显示。使用这个有什么特殊的语法吗bash脚本中的while循环不是';t在vim中正确突出显示,bash,shell,vim,syntax-highlighting,Bash,Shell,Vim,Syntax Highlighting,我试图在bash中的一个while循环中编写一个while循环,第二个while的语法不会突出显示。使用这个有什么特殊的语法吗 while [ "ka" = $name ] do while [ "ka" = $name ] //this while is not highlighted do done done 你说得对。出于某种原因,如果shebang行指向bash,例如,以其中任何一个开头的文件都会正确高亮显示,那么看起来VIm 7.3只会高亮显示嵌套的,而命令: #!/
while [ "ka" = $name ]
do
while [ "ka" = $name ] //this while is not highlighted
do
done
done
你说得对。出于某种原因,如果shebang行指向
bash
,例如,以其中任何一个开头的文件都会正确高亮显示,那么看起来VIm 7.3只会高亮显示嵌套的,而
命令:
#!/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
在所有情况下都会打印
filetype=sh
,因此它看起来像是一个bug。请尝试以下脚本。它对我有用
#!/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
正如所料
问题可能是您在这里发布的代码之前的代码,因为我无法在您的代码中真正找到语法错误。正如其他答案已经指出的,这是语法插件中的一个错误,影响非Bash shell语法 请向脚本作者Charles Campbell提交一份bug报告(基本上是本页的链接);他的电子邮件地址在脚本的标题中;该脚本位于vim安装目录中的
syntax/sh.vim
如果您没有收到回复,请通知vim_dev邮件列表(cp;您需要先注册);希望有人会把它捡起来
变通办法
作为一种解决方法,您可以在默认情况下强制使用Bash语法(在~/.vimrc
中):
你指的是任何像vi或vim这样的编辑器吗?它是字面上的
$name]
还是应该是$name]
?也许这就是问题所在。它在vim编辑器中,而且代码没有按预期执行。@l0b0代码的行为似乎与预期不符。捕捉得好。我通常只用#/bin/bash,没有看到问题。当我将文件转换为使用#时,我能够看到问题/正如l0b0所指出的,顶部的垃圾箱/垃圾箱。是的,让g:is_bash=1也解决了这个问题。
:let g:is_bash = 1