我曾经断断续续地学习过 C++,但从未用它编写过真正的应用程序。长时间以来,我一直认为编写一个文本编辑器会是一件非常有趣的事情,现在我正在寻找一个简单而体面的 C 或 C++ 编写的文本编辑器,能够给我灵感并教我如何自己编写一个文本编辑器。
你们能否向我推荐一个“简单而体面”的 C 或 C++ 编写的文本编辑器?
我曾经断断续续地学习过 C++,但从未用它编写过真正的应用程序。长时间以来,我一直认为编写一个文本编辑器会是一件非常有趣的事情,现在我正在寻找一个简单而体面的 C 或 C++ 编写的文本编辑器,能够给我灵感并教我如何自己编写一个文本编辑器。
你们能否向我推荐一个“简单而体面”的 C 或 C++ 编写的文本编辑器?
您可能想要查看Zile或nvi。两者都相对简单;Zile类似于Emacs,而nvi则是Berkeley的vi
。另一个可以考虑的是Nano,这是一个设计得易于新用户使用的简单文本编辑器。但是我不知道这些编辑器的代码质量如何。
我还建议阅读The Craft of Text Editing:Emacs for the Modern World。该书涵盖了许多编写文本编辑器时需要处理的具体问题,以及解决它们的方法、策略和算法。即使您的编辑器看起来与Emacs完全不同,其内容也应该是相关且有用的。
你想要看到的更像是一个教程而不是一个实际应用程序(我认为像Notepad ++这样的应用程序对初学者来说会很难上手)。由于你没有提到想要编程的环境,你可以查看QT文本编辑器演示。QT是一个跨平台的GUI工具包,因此你不会被绑定到特定的操作系统,但在Windows中设置可能比使用Visual Studio环境更难。
仅针对Windows,你可能需要考虑更深入地了解.NET平台(例如C#),如此问题中所建议的那样。这并没有帮助学习C ++,但它使GUI开发变得容易得多。
获取Vi。 现在真正的编辑器像vi/vim这样的还是很少; 我的意思是有很多像记事本/记事本++这样的编辑器, 但是很少有具有单独命令/控制模式的编辑器。 所以你可以查看vi源代码,汲取灵感,并引入一些革命性的东西。
Notepad++ 在某些情况下可以被定义为“简单”。
JuffEd。它是用C++编写的,由于使用了Qt和QScintilla,因此具有跨平台的特性。Notepad++也使用了Scintilla文本编辑器组件,但仅限于Windows平台。
转向QT,这是跨平台的,拥有丰富的富文本组件(小部件)。在QT中编写第一个应用程序将为您提供实际知识。我建议通过书籍学习QT。