鼠标上打印的垃圾在"设置状态线"之后移动

时间:2017-03-14 08:15:11

标签: vim

我使用以下命令设置状态行:

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(...)部分会导致行为,但我不确定如何修复它。

1 个答案:

答案 0 :(得分:1)

是的,问题出在system

  

前缀为|:silent | shell不会被设置为   煮熟的模式。这用于执行命令   不需要用户输入。它避免了流浪人物的表现   在屏幕上需要| CTRL-L |去除。 >       :silent let f = system('ls *.vim')

因此,您可以通过创建使用system

调用silent的函数来避免这种情况
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=gray