在vim状态行表达式

时间:2015-08-03 19:21:43

标签: function dictionary vim expression statusline

我想使用一个表达式(function),它将两个参数 - 数据和字典 - 作为状态行。

这就是我正在尝试的:

let &stl="%{Brick(statusbricks#ReportLinecount('raw'), {
        \   'brick_color': 'LineNr',
        \   'delimiter_position': 'right',
        \   'delimiter_right': '❯'
        \ })}"

为什么会导致以下错误消息:

E722: Missing comma in Dictionary:
Press ENTER or type command to continue
E116: Invalid arguments for function Brick(statusbricks#ReportLinecount('raw'), {'brick_color': 'LineNr', 'delimiter_position': 'right', 'delimiter_right': '❯'
Press ENTER or type command to continue
E15: Invalid expression:
Brick(statusbricks#ReportLinecount('raw'), {'brick_color': 'LineNr', 'delimiter_position': 'right', 'delimiter_right': '❯'
Press ENTER or type command to continue

如果我删除了函数调用中的字典,它就会通过。 即使我将它用作没有任何空格的单行,我也会遇到同样的错误。

1 个答案:

答案 0 :(得分:0)

要在 'statusline' 表达式中使用字典,可以使用 Funcref

例如,带有字典的参数 sign_getplaced

let g:Sign_getplaced = function('sign_getplaced', ['', {'group':'*'}])

然后在 g:Sign_getplaced 表达式中使用 'statusline'