对于VIM,引用部分的颜色是错误的

时间:2014-08-27 05:22:22

标签: vim colors sh

以下是bash中的一个简单代码:

#!/bin/sh
str='{}\pear\pinapple{look at this}{look at that}\apple'
str=${str%'{look at this}'*}
echo $str
#######################'
#'

str=${str%{look at this*}
echo $str
#######################
#

str=${str#*{}
echo $str
###########################}
#

str='\'
echo $str
############################'
#

它可以在我的电脑中正常运行,结果如预期:

{}\pear\pinapple{look at this}
{}\pear\pinapple
}\pear\pinapple
\

然而,Vi中显示的代码的颜色很奇怪。正如FDinoff建议的那样,我使用命令

:let g:is_bash = 1 | set ft=sh

某些代码的颜色变得正常,而某些代码的颜色变差。

真正的原因是Vi无法区分真正的'{} \'等。

为清楚说明问题,我在图中列出:

1. what Vi shows without :let g:is_bash = 1 | set ft=sh;
    (lines 4 and 19 weird)
2. what Vi shows with :let g:is_bash = 1 | set ft=sh;
    (lines 9, 14 and 19 weird)
3. what Emacs shows.
    (normal)

该图可在以下链接中找到:

https://plus.google.com/107969501608510514420/posts/YUWKXQcbmZK?pid=6052520323379457698&oid=107969501608510514420

1 个答案:

答案 0 :(得分:0)

阅读:help sh.vim。最有可能的问题是您没有为正确的shell使用语法突出显示。例如,如果你运行:let g:is_bash = 1 | set ft=sh那么它看起来会更好。如果添加适当的shebang行(#!/bin/bash),Vim应该会自动检测到这一点。

自动强制bash语法行添加

let g:is_bash = 1

到你的vimrc。

(但我不知道你是否想要bash语法高亮或其他一些shell类型)