bash の 1 つの while ループ内に while ループを記述しようとしていますが、2 番目の while の構文が強調表示されません。これを使用するための特別な構文はありますか?
while [ "ka" = $name ]
do
while [ "ka" = $name ] //this while is not highlighted
do
done
done
bash の 1 つの while ループ内に while ループを記述しようとしていますが、2 番目の while の構文が強調表示されません。これを使用するための特別な構文はありますか?
while [ "ka" = $name ]
do
while [ "ka" = $name ] //this while is not highlighted
do
done
done
他の回答がすでに指摘しているように、これは非 Bash シェル構文に影響する構文プラグインのバグです。
スクリプトの作者である Charles Campbell にバグ レポート (基本的にはこのページへのリンク) を送信してください。彼の電子メール アドレスはスクリプトのヘッダーにあります。スクリプトはsyntax/sh.vim
Vim インストール ディレクトリにあります。
応答がない場合は、vim_dev メーリング リスト (cp. http://www.vim.org/community.php ; 最初に登録する必要があります) にお知らせください。うまくいけば、他の誰かがそれを拾うでしょう。
回避策として、デフォルトで Bash 構文を強制することができます ( ~/.vimrc
.
:let g:is_bash = 1
あなたが正しい。何らかの理由で、VIm 7.3は、シバン ラインが を指している場合にのみネストされたコマンドを強調表示while
bash
するように見えます。たとえば、次のいずれかで始まるファイルは正しく強調表示されます。
#!/usr/bin/env bash
#!/usr/bin/bash
#!/bin/bash
ただし、シバン行または次の行がないわけではありません。
#!/bin/sh
#!/usr/bin/env sh
テストファイル:
[shebang line]
while true
do
while true
do
while true
do
:
done
done
done
:set filetype?
すべての場合に印刷filetype=sh
されるため、バグのようです。
次のスクリプトを試してください。わたしにはできる
#!/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
予想通り。
コードに構文エラーが実際に見つからないため、ここに投稿したコードよりも前のコードに問題がある可能性があります。