gpt4 book ai didi

vim - Vim 如何显示 :ls results (curses/cooked mode)

转载 作者:行者123 更新时间:2023-12-04 06:46:05 25 4
gpt4 key购买 nike

当我在 Vim 中输入 :ls , Vim 列出缓冲区。它很可能使用 def_prog_mode() 进入“熟模式”和 endwin() .我想知道它如何打印值。我提出的最好的方法是使用 system("echo ....")这将是相当费力的。
我试过 printf - 没有效果,和 printw .

我需要在我的应用程序中做同样的事情,而不是创建 Windows 或弹出窗口,我想像 Vim 那样列出内部信息。

这是我尝试过的示例,来自 http://gist.github.com/587622

#include <ncurses.h>

// it seems system echo is the only way to print some stuff in cooked mode
// i am trying to figure out how VIM displays the result of :ls

int main()
{
initscr(); /* Start curses mode */
printw("Hello World !!! Hit a key\n"); /* Print Hello World */
refresh(); /* Print it on to the real screen */
getch();
def_prog_mode(); /* Save the tty modes */
endwin(); /* End curses mode temporarily */
int i = 0;
for (i = 0; i < 5; i++) {
system("echo inside cooked mode");
}
//printf("helllow there\n");
//system("/bin/ls"); /* Do whatever you like in cooked mode */
//system("read");
//system("/bin/sh"); /* Do whatever you like in cooked mode */
//system("echo hit a key"); /* Do whatever you like in cooked mode */
//printw("Hit a key buddy\n"); /* Print Hello World */
reset_prog_mode(); /* Return to the previous tty mode*/
getch();
/* stored by def_prog_mode() */
refresh(); /* Do refresh() to restore the */
/* Screen contents */
printw("After cooked mode.\nKey to quit"); /* Back to curses use the full */
getch();
refresh(); /* capabilities of curses */
endwin(); /* End curses mode */

return 0;
}

使用以下命令编译它:
gcc -o a.out -lncurses a.c && ./a.out

最佳答案

您可能只需要使用 fflush 来刷新 stdio 缓冲区。 .即使用后printf要写一些文字,请调用 fflush(stdout)以确保文本被发送到终端。 ncurses 可能正在调用 setbufsetvbuf启用块缓冲 IO 到终端,这不被视为保存和恢复的 tty 模式的一部分。

关于vim - Vim 如何显示 :ls results (curses/cooked mode),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3749916/

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