注:本代码参考https://github.com/antirez/kilo 进行修改,主要增加了撤销重做,kmp算法查找,以及替换等功能 使用c语言模拟linux下的vim文本编辑器
本项目由小组成员共同开发
用户使用说明。 1.运行编辑器 用户通过控制台命令进入到编译命名为kilo通过命令. /kilo运行程序打开编辑器(默认为新建空白编辑区)。可以通过【./kilo 已有文件名.文件类型 】打开已有文件 2.打开已存在文件 使用. /Kiko filename命令打开已存在的文本文件,文件内容将被读取到编辑区中。
3.光标移动与普通文本编辑 通过方向键移动光标位置,使光标定位到所需编辑位置,进行文本输入,backspace向左删除,delete 向右删除,回车换行等操作
4.Ctrl-S保存文件 使用快捷键Ctrl-S保存文稿修改结果,若为新文件则提示输入文件名,默认保存到当前路径下,enter保存后退出编辑器。
5.Ctrl-F 查找文本 使用快捷键Ctrl-F,输入所需查找的字符串,实现实时增量查找,光标移动到第一个匹配字符串的首位。按方向键将光标移动到上一个/下一个匹配字符串的首位。Esc/Enter键退出退出查找。在当前的状态中,把搜索到的第一个位置高亮表示,但kmp算法实际上返回了所有的匹配位置,我们对于高亮部分的逻辑研究不够深入,所以并没有显性的体现其功能
6.Ctrl-R 文本替换 Ctrl-R进入此功能,首先输入需被替换的字符串,回车结束输入,若原文中查找成功则提示输入替换字符串,回车结束。
7.Ctrl-Z 撤销,Ctrl-Y 重做 用户误删文本时,可Ctrl-Z撤销删除操作,若再次改变主意,可Ctrl-Y进行重做。(限制STACK_INIT_SIZE步以内),在新建文件时,只有当文件保存以后才可以执行撤消重做。本部分存在一定的bug,当撤消重做次数过多的时候会出现内存管理失败的问题,报错原因有两个:1出现两次释放空间,这是由于部分地方函数逻辑没弄清,2库中的orig_termios结构体形式不清楚,在释放空间时候,未能完全释放
8.Ctrl-Q退出文本编辑器 用户随时可使用Ctrl-Q退出文本编辑器,当编辑区有未保存内容时,将提示用户文件未保存。用户可通过连续3次Ctrl-Q强制退出文本编辑器,此时将丢失未保存内容。