<p>I've been using Go for around 4 months and have made some really small projects. I do, however, want to start a project to really "sink my teeth" into the language. I was thinking about writing a very basic version of a VIM-like text editor, but I'm having some trouble figuring out how it would be made. </p>
<p>If anyone has information that could point me in the right direction, or even some examples I'd love to hear it!</p>
<p>Thanks!</p>
<p><strong>EDIT: Wow! Thanks for all of the good info everyone, I really appreciate it!</strong></p>
<hr/>**评论:**<br/><br/>JosephBuchma: <pre><p>Check out Micro <a href="https://github.com/zyedidia/micro" rel="nofollow">https://github.com/zyedidia/micro</a></p></pre>Tmcarr: <pre><p>Wow, this is really neat!!! I might give this a go as my daily driver! </p></pre>ematap: <pre><p>I see what you did there</p></pre>Tmcarr: <pre><p>Hahaha.... I didn't even see that at the time. I really should go further in my proofreading. :P </p></pre>gopherNoodle: <pre><p>You can write extensions for <a href="https://github.com/neovim/go-client">Neovim in Go</a>.</p></pre>adelowo: <pre><p>Interesting.. never knew though</p></pre>dfndoe: <pre><p>Maybe obvious answer, but... Have you looked at the vi or vim source yet? It isn't go, but if you want to figure out where to start this would at least give you some perspective on architectural considerations.</p></pre>hackworks: <pre><p>The Craft Of Text Editing book might be dated but covers a lot of ground: <a href="https://www.finseth.com/craft/" rel="nofollow">https://www.finseth.com/craft/</a></p></pre>justinisrael: <pre><p>This is kind of a tangent, but it reminded me of the <a href="https://github.com/limetext/lime" rel="nofollow">LimeText</a> project, where they were separating the backend from the front end. The goal was to have multiple interfaces, including terminal, all talking to the text editor engine. </p></pre>etherealflaim: <pre><p>VIM is single-threaded, but it would certainly be interesting to make a clone that isn't, as Go provides you the concurrency primitives to make that work nicely.</p>
<p>The major pieces / fun problems to work out would be the display engine (probably using curses or some similar library), input processing, file management, syntax highlighting, plugins, and (if you're really crazy) multi-party editing ala Google docs.</p></pre>ESBDB: <pre><p>proper text editing is actually quite complex. Look at the xi editor project. They have some write ups on the architecture.</p></pre>shazow: <pre><p>Another cool reference, built using only the standard library and extended standard library, inspired by Acme: <a href="https://github.com/as/a" rel="nofollow">https://github.com/as/a</a></p></pre>
这是一个分享于 的资源,其中的信息可能已经有所发展或是发生改变。
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码`
- 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传