我在编造这件事时遇到了一点麻烦。我只想在 Vim 模式下使用 Codemirror 编辑功能,没有任何语法高亮。也就是说,如果我单击文本区域,它会在类似的文本编辑器中转换,如演示页面VIM Demo所示。谢谢!
编辑:如果不是 Codemirror,请告诉我如何将用户单击的文本区域转换为 VIM 类型编辑区域的方法。我想把它做成一个插件,这样每当我点击某个页面上的文本区域时,它就会给我一个类似 VIM(不完全是 vim)的环境来编辑。我应该如何处理键绑定的事情?请帮忙!
我在编造这件事时遇到了一点麻烦。我只想在 Vim 模式下使用 Codemirror 编辑功能,没有任何语法高亮。也就是说,如果我单击文本区域,它会在类似的文本编辑器中转换,如演示页面VIM Demo所示。谢谢!
编辑:如果不是 Codemirror,请告诉我如何将用户单击的文本区域转换为 VIM 类型编辑区域的方法。我想把它做成一个插件,这样每当我点击某个页面上的文本区域时,它就会给我一个类似 VIM(不完全是 vim)的环境来编辑。我应该如何处理键绑定的事情?请帮忙!
CodeMirror 负责所有键绑定(以及 vim 模式的键映射),因此您所要做的就是为textarea
手头创建一个编辑器实例。
查看CodeMirror.fromTextArea()
文档,在静态方法部分下,看看它是如何完成的。
你也可以参考vim bindings demo,简单看一下源码。这是 CodeMirror 实例在那里初始化的方式:
1 | CodeMirror.commands.save = function () {
2 | alert("Saving");
3 | };
4 |
5 | var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
6 | lineNumbers: true,
7 | mode: "text/x-csrc",
8 | keyMap: "vim",
9 | showCursorWhenSelecting: true
10 | });
让我们把它拆开,如下行:
1-3:为保存命令分配一个处理程序,该处理程序映射到:w
vim 键绑定。从文档中,在键绑定部分:
键映射中的属性值可以是单个参数(CodeMirror 实例)的函数、字符串或 false。此类字符串引用
CodeMirror.commands
对象的属性,它定义了默认键绑定使用的许多常用命令,并将它们映射到函数
4:寂静的声音。
5:从 DOM 中获取textarea
元素(用code
其 ID 表示),并将其传递给静态方法,该方法将基于该元素创建 CodeMirror 实例。
6-9:设置各种选项:
6:在装订线中显示行号。
7:将编辑器模式设置为类 C 以突出显示 C 代码。
8:分配 vim 键绑定。
9:嗯,选择时显示光标。
10:把它包起来。
为了使编辑器模式和键绑定工作,需要加载所需的脚本,所以我们也想包括这些:
<script src="../lib/codemirror.js"></script> <!-- main script -->
<script src="../addon/dialog/dialog.js"></script> <!-- addon for vim messages -->
<script src="../addon/search/searchcursor.js"></script> <!-- addon for vim messages -->
<script src="../mode/clike/clike.js"></script> <!-- mode for C-like languages -->
<script src="../keymap/vim.js"></script> <!-- key bindings for vim -->