代码之家  ›  专栏  ›  技术社区  ›  Rob

vim:从vimrc中的set statusline调用自定义函数

vim
  •  6
  • Rob  · 技术社区  · 15 年前

    我正在尝试实现第202页“学习vi”和“vi m”这两本书中的vi m脚本。下面的函数可以工作,但当我尝试使用statusline调用它时,会得到以下错误:

    $ vim
    $ Error detected while processing /Users/me/.vimrc:
    E518: Unknown option: \ %{SetTimeOfDayColors()}
    

    这是vim脚本(目前在my.vimrc中)

    function SetTimeOfDayColors()
        let currentHour = strftime("%H")
        echo "currentHour is " . currentHour
        if currentHour < 6 + 0
          let colorScheme = "darkblue"
        elseif currentHour < 12 + 0
          let colorScheme = "morning"
        elseif currentHour < 18 + 0
          let colorScheme = "shine"
        else
          let colorScheme = "evening"
        endif
        echo "setting color scheme to " . colorScheme
        execute "colorscheme " . colorScheme
    endfunction
    set statusline=%<%f\ %h%m%r%=%-20.(line=%l,col=%c%V,totlin=%L%)\%h%m%r%=%-40(,bytval=0x%B,%n%Y%)\ %{strftime(\"%c\")}%=0x%B\ %P
    set statusline += \ %{SetTimeOfDayColors()}
    

    最后一行的目的是让vim在我进行编辑和运行自定义函数时检查时间。但我不能让它工作。有什么建议吗?谢谢。

    1 回复  |  直到 15 年前
        1
  •  9
  •   Michał Marczyk    15 年前

    您需要立即删除+=右侧的空格。