2017-03-07 22 views
3

我寫這這裏使用字符串bash腳本(<<<),請看下面的例子。該腳本工作正常,並給出預期的輸出,但。問題是這裏這裏被用來串線後(VIM)編輯器的語法顏色都搞砸任何線索,爲什麼,以及如何我可以修復它爲什麼「」這串」在bash改變的任何其後的語法顏色?

enter image description here

文本:?

# get all running screens 
scrcmd=$(ps auxw|grep -i screen|grep -v grep|awk '{print $15}') 
allscr=() 
while read -r line; do 
     allscr+=("$line") 
done <<< $scrcmd 

echo "got screens, now do something else" 
+3

請用文字或圖片替換圖片。 – Cyrus

+2

假定語法高亮規則不知道here-docs,並將它們當作here來處理。 – muru

+0

你的語法高亮設置到底是什麼?至少包括'輸出:設置syntax'和':設置filetype' –

回答

6

bash的(真的sh)Vim中的高亮模式是多用途的;它試圖覆蓋POSIX sh,bash和ksh。你必須告訴它你特別想要bash。

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

應該以後適當突出。

如果你永遠只在乎bash中,你可能只是使這個你在.vimrc裏默認:

​​

編輯:正如評論指出,由查爾斯·達菲,如果使用#!一行,例如

#!/bin/bash 

#!/usr/bin/env bash 

然後vim應該自己做正確的事情。這可能會更容易,除非你有一些原因,你不喜歡使用#!行。

(儘管這可能更容易,但我在這裏留下我的答案,因爲在這種情況下,您沒有#!行,這種情況並不少見,特別是在庫代碼或預期來源的文件中,未執行。

+0

也有類似'# - * - 編碼:?UTF-8 - * - '將有可能給VIM提示以類似的方式設置'is_bash = 1'我有有些同事不希望採購文件以沙巴文開頭。 – erikbwork

相關問題