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

是的,您是正确的,问题在system中。

|:|:静音|外壳不会设置为 烹饪模式。这是用于执行的命令 不需要用户键入。它避免了显示的流浪字符 在需要| 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=gray

相关内容

最新更新