我想只突出显示如下的关键字:( {KEYWORD}
基本上是单个{}
括号之间的大写单词)
我尝试通过复制Mustache Overlay演示中的代码,并将双括号替换为单个括号:
CodeMirror.defineMode('mymode', function(config, parserConfig) {
var mymodeOverlay = {
token: function(stream, state) {
if (stream.match("{")) {
while ((ch = stream.next()) != null)
if (ch == "}" && stream.next() == "}") break;
return 'mymode';
}
while (stream.next() != null && !stream.match("{", false)) {}
return null;
}
};
return CodeMirror.overlayParser(CodeMirror.getMode(config, parserConfig.backdrop || "text/html"), mymodeOverlay);
});
Run Code Online (Sandbox Code Playgroud)
但它不是很好:)
有任何想法吗?
基本上,我正在使用Resig先生的jQuery Hotkeys插件来捕获和处理类似的快捷方式ctrl+o
......
好吧,也许我不uderstand的概念,但我的印象是一个ctrl+o
触发任何地方里面的文件将通过文件热键处理程序被捕获.
例如,以下代码一般工作...
jQuery(document).bind('keydown', 'ctrl+o', fn);
Run Code Online (Sandbox Code Playgroud)
但是,如果用户在输入框内部触发热键,则会失败.
它只适用于我执行以下操作:
jQuery('body, input').bind('keydown', 'ctrl+o', fn);
Run Code Online (Sandbox Code Playgroud)
这对我的健康非常不利,因为它涉及每次在DOM中添加新输入框时绑定该死的处理程序.更糟糕的是,在CodeMirror等复杂小部件的情况下,我不知道要绑定什么.
Dunno,如果我的问题有道理,也许我使用了错误的方法?我也试着结合下面的对象,但它没有工作:window
,document
,body
,div[contains the whole page]
NB:你可以在这里试一试.
有可能通过普遍遵循的方式讲解了使用在IPython的笔记本codemirror的vim的模式,在这里,我很享受它,但是它2.X因为笔记本的接口"偷"的快捷键是不可能的.事实上,codemirror的vim模式中的"Esc"是Ctrl-c,但它仍然不能正常工作.
我对Javascript一无所知,但似乎是codemirror的vim.js所在
...\IPython的\ HTML \静\分量\ codemirror
以某种方式将Ctrl-c映射到Esc,但是这个Esc可能是由ipython notebook占用的.
混合ipython笔记本和vim键盘绑定是一个很好的环境.2.x中有解决方法吗?因此,我仍在使用1.2.1.
~~ Vimception对3.x(Jupyter)不起作用,但我发现这个人做得很好.这很完美.~~
请看@Λlisue的答案.他值得+100.
有没有人尝试通过browserify使用代码镜像?
我发现没有任何东西是可见的,即使它已经生成了所有的html标签.
代码 :
var CodeMirror = require('codemirror');
require('codemirror/mode/javascript/javascript.js');
var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
lineNumbers: true,
extraKeys: {
"Ctrl-Space": "autocomplete"
},
mode: {
name: "javascript",
globalVars: true
}
});
Run Code Online (Sandbox Code Playgroud)
我想知道我应该如何要求js模式?
我想创建一个输入,用户只能写纯文本,但我可以在那里获得该文本的一部分并用一些HTML替换它.
因此,举例来说,我要像一个文本转换Lorem Ipsum {{dolor}}
到Lorem Ipsum <some html with data from JS object>
我有一个带有一些数据的对象.
var data = {
dolor: {
icon: 'https://placehold.it/16x16/',
text: 'Dolor text'
}
}
Run Code Online (Sandbox Code Playgroud)
我想用它来获取自定义文本和图像,所以
{{dolor}}
应该转换为类似的东西
<span class="image">
<img src="https://placehold.it/16x16/">
Dolor text
</span>
Run Code Online (Sandbox Code Playgroud)
我的方法是使用CodeMirror,定义一个新模式并检测花括号,但现在我不知道如何获取这些大括号之间的内容,我不知道如何修改输出的HTML(因为CodeMirror只添加了一个cm-NameOfMode
CSS类到文本).
这就是我所拥有的
var data = {
dolor: {
icon: 'https://placehold.it/16x16/',
text: 'Dolor text'
}
}
CodeMirror.defineMode( 'uoVariable', function( config, parserConfig ){
var uoVariable = {
token: function( stream, state ){
var character;
// console.log( state.inString );
if ( stream.match( …
Run Code Online (Sandbox Code Playgroud)如何通过javascript命令设置CodeMirror编辑器的值?我只需要为它设置一个文本.但是如何?..非常感谢你的帮助!
我目前正在使用CodeMirror在浏览器的文本区域中编辑CODE.如果我有超过20行代码,它会向右添加一个垂直滚动条.但我不需要这个滚动条.相反,我需要编辑器大小垂直增长.
有人可以帮忙吗?
我想将CodeMirror JavaScript编辑器集成到KnockoutJS中.我知道还有Ace,但在我看来,使用CodeMirror会更容易.
我已经为JQueryUI小部件和QTip集成了自定义绑定,但这些是我在Internet上找到的代码片段,然后我只需要修改非常小的部分.
不幸的是,似乎我已经达到了我对Javascript的限制所以我在这里转向JavaScript Sith Masters.我不一定希望为我写的全部内容,指针和关于如何继续的建议会有很大的帮助.
我有一段代码:
HTML(我删除了textarea上已有的自定义绑定,这里没关系)
<body>
<textarea id="code" cols="60" rows="8"
data-bind="value: condition,
tooltip: 'Enter the conditions',
codemirror: { 'lineNumbers': true, 'matchBrackets': true, 'mode': 'text/typescript' }"></textarea>
</body>
Run Code Online (Sandbox Code Playgroud)
CodeMirror的自定义绑定处理程序的开始:
ko.bindingHandlers.codemirror = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
var options = valueAccessor() || {};
var editor = CodeMirror.fromTextArea($(element)[0], options);
}
};
Run Code Online (Sandbox Code Playgroud)
目前,这不会产生JS错误,但会显示2个文本区域而不是1个.
那我接下来该怎么办?
我想重置Codemirror编辑器的所有内容.理想情况下,这应该清除textarea,删除所有标记并清除历史记录.
实现这一目标的最佳方法是什么?
我使用不同的文本字段作为CodeMirror的代理.我想使用的功能,例如closebrackets.js
,它们通过键盘事件激活,如keydown
,keypress
和keyup
.我尝试了几种不同的方法来触发这些事件,但没有一种方法导致CodeMirror接收任何东西:
kc = 219
e = $.Event 'keydown', { which: kc }
$( myCodeMirror.getInputField() ).trigger e
Run Code Online (Sandbox Code Playgroud)
不行.没有事件被触发.
cmIF = $( myCodeMirror.getInputField() )
textArea = $('<textarea></textArea>')
$('body').append textArea
textArea.keydown (e) ->
cmIF.focus()
return
kc = 219
e = $.Event 'keydown', { which: kc }
textArea.trigger e
Run Code Online (Sandbox Code Playgroud)
尝试转发来自不同文本区域的事件.不行.CM不会触发事件.
$( myCodeMirror.getWrapperElement() ).children().each (index) ->
$(this).trigger e
return
Run Code Online (Sandbox Code Playgroud)
试图在CMs包装器的每个子节点上触发事件.不行.没有发生CM事件.
我在这做错了什么?如何在CodeMirror实例上触发键盘事件?
codemirror ×10
javascript ×8
events ×2
jquery ×2
browserify ×1
coffeescript ×1
dom ×1
hotkeys ×1
ipython ×1
knockout.js ×1
npm ×1
regex ×1
vim ×1