我用以下命令设置了statusline:
set laststatus=2
set statusline=%F\ %r\ [Branch\ %{system(\"echo\ -n\ OK\")}]\ %=[Hex=\%02.2B]\ [Column\ %c]\ [Line\ %l/%L]
hi StatusLine ctermbg=black ctermfg=gray当我滚动鼠标滚轮时,窗口中打印了符号:^[OA和^[OB,它们可以通过按PgUp/-Down来清除。我发现状态线的system(...)部分导致了这种行为,但我不确定如何修复它。
发布于 2017-03-14 18:21:48
是的,您是对的,问题出在system中。
前缀为|:silent|外壳将不会设置为熟食模式。这意味着用于不需要用户键入的命令。它避免了需要|CTRL-L|才能删除的字符显示在屏幕上。>
:silent let f = system('ls *.vim')
因此您可以通过创建使用silent调用system函数来避免这种情况
set laststatus=2
function! EchoOk()
silent let es = system("echo -n OK")
return es
endfunction
set statusline=%F\ %r\ [Branch\ %{EchoOk()}]\ %=[Hex=\%02.2B]\ [Column\ %c]\ [Line\ %l/%L]
hi StatusLine ctermbg=black ctermfg=grayhttps://stackoverflow.com/questions/42780822
复制相似问题