Как заставить vi перерисовывать экран?


111

Когда я использую

git commit --amend

Он войдет в окно vi, чтобы я мог вводить комментарии для фиксации, проблема в том, что окна vi будут отображать некоторые грязные символы из прежнего фона оболочки. Поэтому мне интересно, как я могу позволить vi перезагрузить или перерисовать экран, чтобы он стал нормальным.

Пока я пытаюсь сбросить терминал и нажать Ctrl + L, это работает, но мне интересно, есть ли лучший ответ для такой ситуации?

Ответы:


216

Пользуюсь ctrl+ Lдля таких целей уже 35 лет, что в этом плохого?


2
control + L у меня вроде не работает; Сначала мне нужно перезагрузить терминал. не знаю почему ....
Сэм Ляо

7
Была ли ваша настройка .vimrc "сроком"? Возможно, он выставлял его неправильно.
Лоуренс Гонсалвес,

6
@AlexMartelli: ctrl + L, похоже, не работает с Putty. !redrawболее универсален.
gsbabil 08

10
ctrl + l у меня не работает, похоже, это зависит от вашего терминала. также: перерисовать! кажется, что решение работает для всех.
DebugXYZ

2
Для тех, кто выше упомянул, что <CL> не работает, я думаю, вы могли сопоставить привязку ключа с чем-то другим. В таком случае просто используйте:redraw!
huangzonghao

292

Чтобы принудительно обновить экран

:redraw!

4

В Vi они перерисовываются:

  • ^ R (не работает с клеммами типа VT100)
  • ^ L (не работает с ТВ-терминалами)

С http://www.cs.rit.edu/~cslab/vi.html#A1.4 (мертвая ссылка; см. Архив )

Как отмечалось в комментариях, Vim теперь использует ^ R для повтора и только ^ L для перерисовки.


7
Разве ^ R не повторить? ^ L у меня работает для перерисовки экрана.
Geremia

@Geremia По-видимому, зависит от типа терминала, ^ L, вероятно, гораздо более распространен.
Тим Сильвестр

2
В vim ^ R всегда повторяется.
We All Monica
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.