首页 > Linux下的vim/emacs的编辑模式是如何实现的?

Linux下的vim/emacs的编辑模式是如何实现的?

我们一般执行程序是这样的:

而vim却是这样:

请问这需要终端io编程吗?还需要其他知识吗?


curses库,(或者说ncurses库)。

那本封面是两个人的《linux程序设计》中有一个章节专门讲curses库。


你学习 ncurses 库的使用就可以了。


一般我们使用的终端(Linux终端、Windows的超级终端)是能够处理一些控制码(一些特定的ASCII码),通过这些控制码你可以对终端的某些属性进行控制。
比如你在你的终端上执行:

echo -e "q\033[34m<Enter>\033[0m"

如果正常的话你应该能够看到:

你也可以用C语言写printf("q\033[34m\033[0m")输出,得到的效果也是一样的。

通过代码和截图不知道你是不是有点感觉了,不打算深入的话再去简单的了解一下另外的几个控制码就够了,比如设定背景色、文字颜色、文字下划线、光标位置等等。我也是刚好这段时间在写一个单片机的终端程序,所以简单的了解了一下。这里有我的一点总结(没错,就这两天刚总结的)。https://github.com/sintrb/c-terminal

得声明一下,我没有看过vim/emacs的源码,也没有用过楼上说的ncurses,不过我想可能它们就是按照这种方式进行的封装了。希望对你有用。


建议读VIM源码

【热门文章】
【热门文章】