How would a text editor like VIM work in Go?

blov · · 429 次点击    
这是一个分享于 的资源,其中的信息可能已经有所发展或是发生改变。
<p>I&#39;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 &#34;sink my teeth&#34; into the language. I was thinking about writing a very basic version of a VIM-like text editor, but I&#39;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&#39;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&#39;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&#39;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&#39;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&#39;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

429 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传