📄 vi.c
字号:
#include<curses.h> /* 引进 curses.h, 并自动引进 stdio.h */#define StartX 1 /* 决定游标初始位置 */#define StartY 1 void initial(); main() { int x=StartX; /* 宣告 x,y 并设定其初值 */ int y=StartY; int ch; /* 宣告 ch 为整数,配合 getch() 使用 */ initial(); /* 呼叫 initial(), 启动 curses 模式, */ /* 并完成其它设定 */ box(stdscr,'|','-'); /* 画方框 */ attron(A_REVERSE); /* 开启反白模式 */ mvaddstr(0,20,"Curses Program"); /* 在 (20,0) 处输出反白字元 */ attroff(A_REVERSE); /* 关闭反白模式 */ move(x,y); /* 将游标移至初始位置 */ do { /* 以无限回圈不断等待输入 */ ch=getch(); /* 等待自键盘输入字元 */ switch(ch) { /* 判断输入字元为何 */ case KEY_UP: --y; /* 判断是否"↑"键被按下 */ break; case KEY_DOWN: ++y; /* 判断是否"↓"键被按下 */ break; case KEY_RIGHT: ++x; /* 判断是否"→"键被按下 */ break; case KEY_LEFT: --x; /* 判断是否"←"键被按下 */ break; case ' ': /* 判断是否 ENTER 键被按下 */ ++y; x=0; break; case ' ': /* 判断是否 TAB 键被按下 */ x+=7; break; case 127: /* 判断是否 BACKSPACE 键被按下 */ mvaddch(y,--x,' ');/* delete 一个字元 */ break; case 27: endwin(); /* 判断是否[ESC]键被按下 */ exit(1); /* 结束 curses 模式 */ /* 结束此程式 */ default: addch(ch); /* 如果不是特殊字元, 将此字元印出 */ x++; break; } move(y,x); /* 移动游标至现在位置 */ } while (1); } void initial() /* 自定开启 curses 函式 */ { initscr(); cbreak(); nonl(); noecho(); intrflush(stdscr,FALSE); keypad(stdscr,TRUE); refresh(); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -