Linux下的vim/emacs的编辑模式是如何实现的?
伊谢尔伦
伊谢尔伦 2017-04-17 12:57:54
[Linux讨论组]

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

而vim却是这样:

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

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(4)
阿神

一般我们使用的终端(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,不过我想可能它们就是按照这种方式进行的封装了。希望对你有用。

伊谢尔伦

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

大家讲道理

建议读VIM源码

大家讲道理

curses库,(或者说ncurses库)。

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号