(代码地址: 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 在我看来, 定位不清晰, 野心太大, 不满之二), 一来太复杂, 二来避免与环境的冲突