如何让vi重新绘制屏幕?

130
当我使用时,

git commit --amend

它将进入一个vi窗口,让我输入提交的注释,问题是vi窗口会显示以前shell背景中的一些脏字符。所以我想知道如何让vi重新加载或重绘屏幕以使屏幕正常。

到目前为止,我尝试过reset终端和Ctrl+L,这可以解决问题,但我想知道是否有更好的解决方法?

3个回答

329

强制刷新屏幕

:redraw!

254
如果您的终端支持,Ctrl+L 是常用的这个操作的快捷键。

2
控制键+L似乎对我不起作用;我必须先重置终端。不知道为什么... - Sam Liao
7
你的 .vimrc 文件中是否设置了 'term'?也许设置不正确。 - Laurence Gonsalves
7
@AlexMartelli说,在Putty上似乎无法使用ctrl+L。使用!redraw更加通用。 - gsbabil
10
对我来说,Ctrl+L不能用,这似乎取决于你的终端。此外,:redraw! 看起来是适用于所有人的解决方案。 - DebugXYZ
2
对于那些提到<C-L>无法工作的人,我认为你可能已经将键绑定映射到其他内容。在这种情况下,只需使用:redraw!即可。 - hzh
显示剩余4条评论

6

在Vi编辑器中,这两个命令都是用于重绘屏幕的:

  • ^R(不适用于VT100类型终端)
  • ^L(不适用于Televideo终端)

参考自http://www.cs.rit.edu/~cslab/vi.html#A1.4(链接已失效,请查看存档版本

需要注意的是,在Vim编辑器中,^R现在用于重做(redo),而单独使用^L则用于重绘(redraw)。


7
“Isn't ^R redo?”的意思是“^R不是用来重做的吗?”,“^L works for me for redrawing the screen.”的意思是“对我来说^L可以用来重新绘制屏幕。” - Geremia
@Geremia 取决于终端类型,^L 显然可能更普遍。 - Tim Sylvester
2
在vim中,^R始终表示重做。 - We Are All Monica

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接