gpt4 book ai didi

c++ - Vim "take control"的终端如何并允许其用作可修改的缓冲区?

转载 作者:太空宇宙 更新时间:2023-11-04 04:55:16 25 4
gpt4 key购买 nike

Vim 如何“控制”终端并允许其用作可修改的缓冲区?

使用 C++(在 Linux 中)等语言创建自己的程序来任意修改终端使用的字符缓冲区有多困难?

最佳答案

本质上,输出缓冲区只是一堆字符。

像 VIM 一样使用终端的最基本方法是发出退格键。终端中的退格键是非破坏性的,因此它们只是将光标向左移动。

所以你可以发出退格键,直到你发现自己处于正确的位置。

如果您的终端支持 ANSI 转义序列(特殊文本序列),您可以使用 \033[number;numberH 跳转,例如\033[3;3H 将跳转到第 3 行和高度 3,然后您可以打印一些内容。

C中是:

int row = 3;
int col = 3;

printf("\033[%d;%dH", row, col);
printf("Hello world");

当然,并非所有终端都支持 ANSI 转义序列。

这就是为什么你有 ncurses库和 move(row,col) 函数。

您还可以尝试执行 native 函数。
我不知道 linux header 里面有什么,但在 Windows 中,winapi.h 提供了使用缓冲区的有效方法:SetConsoleCursorPosition

关于c++ - Vim "take control"的终端如何并允许其用作可修改的缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48312025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com