13

関数を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

また、図書館でシバンを使用することは許可されていないと思いましたが、それは素晴らしい解決策です

とにかくg:is_bash.vimrcで使用するとパターンが見つからないというエラーが返されます

だから私がやりたいのは、bashで書くだけで、拡張子のないファイルをbashとしてvimで認識することです。

4

2 に答える 2

16

の構文ファイルは、sh実際にはいくつかの異なる種類のシェル構文を処理します: bashksh、およびplain old sh. conf ファイルがbashまたはとして認識されないkshため、 にフォールバックしshます。$(...)では有効な構成ではないshため、エラーとして強調表示されます。

これを修正するには、ファイルに「g:is_bash」が設定されていることを確認してください。これにより、sh構文スクリプトがファイルをbashコードとして強調表示する必要があることがわかります。.vimrc質問を編集して、ファイルにsh構文の強調表示を使用するために追加したものを含めてください。これにより、「g:is_bash」を設定する正しい方法を簡単に提案できます。

更新: Alok がコメントしたように、ファイルに以下を追加できるはずです。

#!/bin/bash

vim同様に使用する正しい構文の強調表示を知らせます。

于 2013-02-06T15:55:44.150 に答える