我正在编写一个使用字符串(<<<
)的bash脚本,请参阅下面的示例。该脚本工作正常并给出了预期的输出,但问题是(vim)编辑器语法颜色在使用此字符串的行之后全部搞砸了。任何线索为什么以及如何解决它?
正如文字:
# 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"
答案 0 :(得分:13)
Vim中的bash(真正的sh
)高亮模式是多用途的;它试图覆盖POSIX sh,bash和ksh。你必须告诉它你特别想要bash。
:let b:is_bash=1
:set ft=sh
之后应该正确地突出显示。
如果你只关心bash,你可以将它作为.vimrc中的默认值:
let g:is_bash=1
编辑:正如Charles Duffy在评论中指出的那样,如果您使用#!
行,例如
#!/bin/bash
#!/usr/bin/env bash
然后vim应该自己做正确的事情。这可能更容易,除非你有一些理由不想使用#!
行。
(即使这可能更容易,我在这里留下我的答案,因为在这种情况下你没有#!
行,这并不罕见,特别是在图书馆代码或预期会被采购的文件中,执行。)