繁体   English   中英

C ++程序控制终端窗口

[英]C++ Program taking control of terminal window

当在终端中使用vim时,它基本上会消除终端的窗口,并为您提供一个新的窗口以开始编码,但是当您退出vim时,仍会列出终端的先前输出。 如何清除终端以便它只输出程序的输出,但是一旦进程结束就返回到正常状态? (在linux中,fedora)

在低级别,您向终端程序发送一组控制字符,告诉它该做什么。 这可能有点太复杂,无法手动管理。

因此,您可能希望查看像ncurses这样的控制台库,它可以为您管理所有这些复杂性。

特别是对于在程序退出后神奇地出现的先前内容,这实际上是vim正在利用的xterm特性,并且大多数现代终端都支持。 它被称为“备用屏幕”或简称为“altscreen”。 基本上你告诉终端程序“好的,现在切换到一个全新的屏幕,我们稍后会再回到另一个屏幕”。

切换到备用屏幕的命令通常是\\E[?47h ,而切换回的命令是\\E[?47l为了好玩试试这个:

echo -e "\033[?47h"

然后切换回:

echo -e "\033[?47l"

或者对于一个更完整的解决方案,它依赖于你的shell来设置正确的东西(这些是vim通常使用的序列):

echo -e "\0337\033[?47h" # Save cursor position & switch to alternate screen
# do whatever

#Clear alternate screen, switch back to primary, restore cursor
echo -e "\033[2J\033[?47l\0338" 

您可以在程序中键入“clear”或添加系统命令以调用“clear”。 此外,如果您不知道,您可以从vim内部运行系统命令,因此您不必退出并键入clear。 您也可以从vim内部编译和运行程序,例如 - >

:!clear
:!make
:!./programName

此外,我从不使用这种技术,但我相信你可以通过使用:set terminal让vim调用一个新的:set terminal

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM