Ruby on Rails中,如何将Codemirror选项卡转换为空格长尾词?
- 内容介绍
- 文章标签
- 相关推荐
本文共计355个文字,预计阅读时间需要2分钟。
在Codemirror中,当你使用标签时,默认情况下按Enter键会自动插入空格。但如果退格到行的开头并使用选择卡,Codemirror不会将其视为制表符。
解决方法如下:
1. 修改Codemirror的配置,将空格视为制表符。可以通过设置`indentWithTabs`属性为`true`来实现:
javascriptconst editor=CodeMirror.fromTextArea(document.getElementById(code), { indentWithTabs: true});
2. 使用自定义键绑定,将Enter键的绑定改为插入制表符:
javascripteditor.setOption(keyMap, sublime);
3. 使用自定义函数处理Enter键的按下事件,判断是否在行的开头并插入制表符:
javascripteditor.on(keyup, (cm, event)=> { if (event.keyCode===13 && cm.getCursor().line===cm.lineCount() - 1 && cm.getCursor().ch===0) { cm.replaceSelection(cm.getOption(indentWithTabs) ? \t : ); }});
这样设置后,在满足条件的情况下,Codemirror会自动插入制表符而不是空格。
我在应用程序中使用Codemirror.有没有人找到一种方法让它在使用标签时使用空格?当我按Enter键转到新行时,它使用空格.但是,如果我退格到行的开头,并使用选项卡,则将其作为制表符而不是2或4个空格或我设置的任何内容插入.然后,当我查看渲染视图时,我的代码在我使用tab键的区域中有8个缩进空格.是否有一些选项或方法将实际制表符转换为Codemirror中的空格?我也在使用codemirror-rails gem,它可能不像实际的Codemirror版本那样是最新的.
我将覆盖默认的Tab键功能并将其替换为此功能.将其添加到Codemirror配置中.
extraKeys: { "Tab": function(cm){ cm.replaceSelection(" " , "end"); } }
Demo jsfiddle
本文共计355个文字,预计阅读时间需要2分钟。
在Codemirror中,当你使用标签时,默认情况下按Enter键会自动插入空格。但如果退格到行的开头并使用选择卡,Codemirror不会将其视为制表符。
解决方法如下:
1. 修改Codemirror的配置,将空格视为制表符。可以通过设置`indentWithTabs`属性为`true`来实现:
javascriptconst editor=CodeMirror.fromTextArea(document.getElementById(code), { indentWithTabs: true});
2. 使用自定义键绑定,将Enter键的绑定改为插入制表符:
javascripteditor.setOption(keyMap, sublime);
3. 使用自定义函数处理Enter键的按下事件,判断是否在行的开头并插入制表符:
javascripteditor.on(keyup, (cm, event)=> { if (event.keyCode===13 && cm.getCursor().line===cm.lineCount() - 1 && cm.getCursor().ch===0) { cm.replaceSelection(cm.getOption(indentWithTabs) ? \t : ); }});
这样设置后,在满足条件的情况下,Codemirror会自动插入制表符而不是空格。
我在应用程序中使用Codemirror.有没有人找到一种方法让它在使用标签时使用空格?当我按Enter键转到新行时,它使用空格.但是,如果我退格到行的开头,并使用选项卡,则将其作为制表符而不是2或4个空格或我设置的任何内容插入.然后,当我查看渲染视图时,我的代码在我使用tab键的区域中有8个缩进空格.是否有一些选项或方法将实际制表符转换为Codemirror中的空格?我也在使用codemirror-rails gem,它可能不像实际的Codemirror版本那样是最新的.
我将覆盖默认的Tab键功能并将其替换为此功能.将其添加到Codemirror配置中.
extraKeys: { "Tab": function(cm){ cm.replaceSelection(" " , "end"); } }
Demo jsfiddle

