我正在编写一个bash脚本,在这里使用strings(<<<),请参阅下面的示例.该脚本工作正常并给出了预期的输出,但问题是(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"
Run Code Online (Sandbox Code Playgroud)
Dan*_*owe 13
shVim中的bash(真的)高亮模式是多用途的; 它试图覆盖POSIX sh,bash和ksh.你必须告诉它你特别想要bash.
:let b:is_bash=1
:set ft=sh
Run Code Online (Sandbox Code Playgroud)
之后应该正确强调.
如果你只关心bash,你可以将它作为.vimrc中的默认值:
let g:is_bash=1
Run Code Online (Sandbox Code Playgroud)
编辑:正如Charles Duffy在评论中指出的那样,如果你使用一条#!线,例如
#!/bin/bash
#!/usr/bin/env bash
Run Code Online (Sandbox Code Playgroud)
那么vim应该自己做正确的事情.这可能更容易,除非你有一些理由不想使用#!线条.
(即使这可能更容易,我在这里留下我的答案,因为在这种情况下你没有#!一行,这并不罕见,特别是在图书馆代码或预期会被采购,未执行的文件中.)