现代终端(如 iTerm2、GNOME Terminal、macOS Terminal 等)支持两个独立的屏幕缓冲区:

  1. 主屏幕缓冲区(Main Screen Buffer): 这是您通常进行命令行操作、查看历史输出的地方。
  2. 交替屏幕缓冲区(Alternate Screen Buffer): 这是一个临时的、独立的空间,专门用于全屏应用程序,如 Vim、Less、Man Page、Htop、Tmux 等。

工作原理:

  1. 进入全屏应用(如 Vim): 当您启动 Vim 时,它会向终端发送一个特殊的转义序列(通常是 \033[?1049h),告诉终端:“请切换到交替屏幕缓冲区。” 此时,主屏幕的内容被保存起来,Vim 在一个全新的空白屏幕上绘制文件内容。
  2. 退出全屏应用(Vim): 当您退出 Vim 时,它会发送另一个转义序列(通常是 \033[?1049l),告诉终端:“请切换回主屏幕缓冲区。” 此时,Vim 在交替屏幕上绘制的内容应该被销毁,恢复到 Vim 启动前的终端状态。