Vim bash 脚本中错误的语法突出显示

Vim wrong syntax highlighting in bash script

我是 vim 和 bash 的新手,我觉得有些奇怪。我有两个函数,它们有不同的突出显示,但我不明白为什么。我搜索了 google,但我还没有找到这个特定问题的答案。

下面是带有语法高亮显示的代码:

function unlock() {
    rm -f ${LOCKFILE}
    if [ -f ${LOCKFILE} ]; then
        echo "ERROR: Unable to delete lockfile ${LOCKFILE}!"
        exit 1
    fi
    echo_debug "lock file ${LOCKFILE} removed."
}

function copy_file() {
        #  scp -q -i "$RSA_FILE" -P "$NEXTCLOUD_SERVER_PORT" "" \
        #     "$NEXTCLOUD_SERVER_USER@$NEXTCLOUD_SERVER_HOST:$NEXTCLOUD_SERVER_DEST_DIR"
        echo "copy_file()"
}

我注意到,如果我添加另一个名为 coFUNCTION() 的函数,突出显示会更改为 copy_file() 之类的函数。为什么会这样?

这是我的.vimrc

1 set number
2 syntax on
3 :color desert

sh != bash,而 function 关键字是一个 bashism。所以语法突出显示完全有可能是正确的,除非它被应用到错误的语言。您可以简单地删除 function 关键字以更接近 POSIX 语法,这可能有助于突出显示代码。或者,根据突出显示代码的工作方式,您可能会更幸运地添加 shebang line 或将脚本扩展名从 "sh" 更改为 "bash".