一个简单的 .Net Vim 引擎 LibNVim 开发记录 (一)
2010-12-30 15:14
288 查看
(代码地址: https://github.com/joycode/LibNVim
)
动力来自 VsVim
, 原因有:
1) 一些常用功能没有实现或者并不好用(Ver.0.93)
2) 对设计有一些自己的想法
3) VS 2010 基于 MEF 的插件系统为开发新的插件提供了很大的便利(顺便了解下 MEF)
4) 最后, 也最重要的是, 可以参考 VsVim 中与 VS 交互的代码部分, 否则, 我自己恐怕没有这个精力与时间去摸索
因此, 经过思量后, 按耐不住, 决定按照自己的想法, 重新造个轮子.
先说下思路:
Vim 最核心是独特的键盘交互模式, 如果要做一个插件, 或者说重做一个 Vim, 最重要的也是实现这套键盘输入的处理机制.
而且, 这套机制应该设计成独立于外部环境, 通用的一个东西(参考 yzis
), 从而获得比较好的移植性, 方便其他 .Net IDE 重用.(而这, 正是 VsVim 让我不满意的一个地方, 跟 VS 纠缠的太厉害.)
作为个人项目, 时间与精力有限, 不可能做一个大而全的系统, 所以需要一个合理的目标定位:
1) 实现 Vim 最核心的键盘交互模式, 即各种光标走位, 文档内容的增删改, 对齐, 拷贝粘贴, 撤销/重做, 搜索及 "*"
2) "Ctrl+XXX"命令, 文件操作, 宏之类的统统不管(VsVim 在我看来, 定位不清晰, 野心太大, 不满之二), 一来太复杂, 二来避免与环境的冲突
)
动力来自 VsVim
, 原因有:
1) 一些常用功能没有实现或者并不好用(Ver.0.93)
2) 对设计有一些自己的想法
3) VS 2010 基于 MEF 的插件系统为开发新的插件提供了很大的便利(顺便了解下 MEF)
4) 最后, 也最重要的是, 可以参考 VsVim 中与 VS 交互的代码部分, 否则, 我自己恐怕没有这个精力与时间去摸索
因此, 经过思量后, 按耐不住, 决定按照自己的想法, 重新造个轮子.
先说下思路:
Vim 最核心是独特的键盘交互模式, 如果要做一个插件, 或者说重做一个 Vim, 最重要的也是实现这套键盘输入的处理机制.
而且, 这套机制应该设计成独立于外部环境, 通用的一个东西(参考 yzis
), 从而获得比较好的移植性, 方便其他 .Net IDE 重用.(而这, 正是 VsVim 让我不满意的一个地方, 跟 VS 纠缠的太厉害.)
作为个人项目, 时间与精力有限, 不可能做一个大而全的系统, 所以需要一个合理的目标定位:
1) 实现 Vim 最核心的键盘交互模式, 即各种光标走位, 文档内容的增删改, 对齐, 拷贝粘贴, 撤销/重做, 搜索及 "*"
2) "Ctrl+XXX"命令, 文件操作, 宏之类的统统不管(VsVim 在我看来, 定位不清晰, 野心太大, 不满之二), 一来太复杂, 二来避免与环境的冲突
相关文章推荐
- 一个简单的 .Net Vim 引擎 LibNVim 开发记录 (三)
- 一个简单的 .Net Vim 引擎 LibNVim 开发记录 (二)
- [入门教程]使用Cocos2d-html5游戏引擎编写一个简单的游戏 第一回合: 搭建开发环境
- 一个简单的Chrome拓展开发记录
- 自学网页开发,打算自己开发一个简单的网站,记录下自己开发过程
- 新手开发asp.net模板引擎(1): 一个简单的模板
- 开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。
- 开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。
- 开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。
- 新手开发asp.net模板引擎(1): 一个简单的模板
- 开发ActiveX控件的实践(1)--用VS2010开发一个简单的TestOcx控件
- Maven笔记(6)-- 使用Eclipse开发一个Servlet3.0的简单例子
- 【Cocos2d-x游戏引擎开发笔记(19)】简单数据存储以及抗锯齿
- EBS Form开发建立一个最简单的Form并部署到到EBS中(1)
- 由三目运算符 == ? : 引起的一个问题,醉了,基础不过关。记录一下,比较简单的一个问题,只是为了记录一下
- 开发部署一个简单的Servlet
- 重新想象 Windows 8 Store Apps (64) - 后台任务: 开发一个简单的后台任务
- IOS 自定义控件 非教程~只是记录自己写的一个简单控件
- sharepoint 2010 自定义字段开发(1) 创建一个简单的列表自定义字段
- 浅谈:使用Java基于MVC模式开发一个简单商品管理系统