2017-04-08 17 views
1

vimとシェルスクリプトが初めてです。私は本当の問題があるか、それともvimやシェルスクリプトを理解していない私には分かりませんが、私はGoogleを使って検索して答えは得られませんでした。とにかく、これはvimでシェルスクリプトを実行しているときに得たものです。そして、私は構文のハイライトが正しく動作していないと思う。vimのシェルスクリプトの構文の誤りが間違っています

See image click here

filename=$(basename $file) 

Vimは赤色で$()を強調する。

BTW:Macでgvim 8.0を使用していて、YCMがインストールされています(該当する場合)。

+0

申し訳ありませんが、なぜ正確には動作していないと言いますか? – sidyll

+0

こんにちは@sidyllだから私は自分のコードに文法エラーがないと思っているが、vimは私のコードの一部を赤で強調表示している(画像にあるように)。私は構文エラーがあることを意味しましたか?私のスクリプトはラップトップでうまく動作します。 –

+0

私はあなたのcolorschemeがそれを行う方法です:)あなたは別のものを試してみましたか? – sidyll

答えて

3

これは、Vimのシェル構文の動作と関係があります。 posixシェル、ksh、bashの3つのモードがあります。あなたはbash構文を使っていますが、Vimはそれをposixシェル(デフォルト)としてレンダリングしています。

Vim 8.0のこのコードの3つの異なるバージョンのスクリーンショットです。

enter image description here

トップバージョンでは、あなたのスクリーンショットの掲載コードだけです。デフォルトでは、posixシェルモードを使用しています。赤いハイライトが存在することがわかります。

中間バージョンでは、#!/bin/shをファイルの先頭に追加しました。これはまだposixモードであり、まだ赤いハイライトを持っています。

最後に、私は#!/bin/bashに切り替えました。これによりbashの動作がトリガされ、bash固有の構文はもはやエラーとしてマークされなくなります。

#!行は、ファイルの種類を自動検出するために使用されます。しかし、それが欠落していても、強制的にモードを強制することは可能です。

:let b:is_bash=1 
:set ft=sh 

このモードは、ファイルを開くときに設定されます。したがって、#!/bin/bashを追加しても、すぐにモードが修正されるわけではありません。ファイルを保存/終了してから再度開いて、bashモードに切り替える必要があります。 (または、この段落のすぐ上のトリックを使用してください)

+0

覚えてよかった!あなたは素晴らしいです。 –

関連する問題