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

How does Vim "take control" of the terminal and allow it to be used as a modifiable buffer?

本文关键字:修改 缓冲区 control take 如何 终端 Vim      更新时间:2023-10-16

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

创建我自己的程序,可以使用 c++(在 linux 中(等语言任意修改终端使用的字符缓冲区有多困难?

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

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

因此,您可以发出退格键,直到您发现自己在正确的位置。

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

C 中,即:

int row = 3;
int col = 3;
printf("33[%d;%dH", row, col);
printf("Hello world");

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

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

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