首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"set statusline“之后鼠标移动时打印的垃圾

"set statusline“之后鼠标移动时打印的垃圾
EN

Stack Overflow用户
提问于 2017-03-14 16:15:11
回答 1查看 107关注 0票数 1

我用以下命令设置了statusline:

代码语言:javascript
复制
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(...)部分导致了这种行为,但我不确定如何修复它。

EN

回答 1

Stack Overflow用户

发布于 2017-03-14 18:21:48

是的,您是对的,问题出在system中。

前缀为|:silent|外壳将不会设置为熟食模式。这意味着用于不需要用户键入的命令。它避免了需要|CTRL-L|才能删除的字符显示在屏幕上。> :silent let f = system('ls *.vim')

因此您可以通过创建使用silent调用system函数来避免这种情况

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42780822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档