2017-04-08 44 views
1

我是vim和shell腳本的新手。我不確定是否存在真正的問題,或者只是我不瞭解vim或shell腳本,但是我通過google進行了搜索並沒有得到任何答案。無論如何,這是我在vim中執行shell腳本時得到的結果。我認爲語法突出顯示不能正常工作。vim中shell腳本的錯誤語法高亮

See image click here

filename=$(basename $file) 

Vim高亮的紅色的$()

順便說一句:我在Mac上使用gvim 8.0並且安裝了YCM(如果它是相關的)。

+0

對不起,但你爲什麼說它不工作?似乎在圖像中工作 – sidyll

+0

Hi @sidyll所以我在想我的代碼中沒有任何語法錯誤但是vim確實突出顯示了我的一些紅色代碼(如圖所示)。你的意思是說我有語法錯誤嗎?我的腳本在我的labtop上正常工作。 –

+0

對我來說,這只是你的顏色配方:)你試過另一個嗎? – sidyll

回答

3

這與Vim的shell語法的行爲有關。它有三種模式:posix shell,ksh和bash。您正在使用bash語法,但Vim將其渲染爲posix shell(默認值)。

這是Vim 8.0中這段代碼的3個不同版本的屏幕截圖。

enter image description here

頂級版只是你在你的屏幕截圖發佈的代碼。默認情況下,它使用posix shell模式,並且您可以看到存在紅色高光。

在中間版本中,我已將#!/bin/sh添加到文件的開頭。這仍然處於posix模式,仍然有紅色高光。

在底部,你可以看到我切換到#!/bin/bash。這會觸發bash行爲,現在您可以看到特定於bash的語法不再被標記爲錯誤。

#!行用於自動檢測文件類型。但是,如果缺失,如果您願意,仍然可以強制使用該模式。

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

請注意,打開文件時會設置模式。因此,添加#!/bin/bash不會立即修復該模式。您需要保存/退出文件,然後再次打開,切換到bash模式。 (或使用本段上面的技巧。)

+0

偉大的學習!你太棒了。 –