解决CodeMirror编辑器Tab转空格问题

简介:

CodeMirror默认

最近用CodeMirror做了个编辑器,遇到一个问题: 就像这样:

默认的Tab是不会转为空格的,需要处理。

codemirror-no


不是想要的结果

网上和官网提供找的方法是:

editor.setOption("extraKeys", {  
  Tab: function(cm) {
    var spaces = Array(cm.getOption("indentUnit") + 1).join(" ");
    cm.replaceSelection(spaces);
  }
});
AI 代码解读

实践了一下,还是会有一个问题: 
选中多行代码缩进的时候,选中的代码也会被转为空格,就被删了!!而不是理想中的选中几行都缩进。


解决方案

经过了几天的积累,终于找到了解决方案:

editor.setOption("extraKeys", {  
    Tab: newTab
});

function newTab(cm) {  
    if (cm.somethingSelected()) {
        cm.indentSelection('add');
    } else {
        cm.replaceSelection(cm.getOption) ? "\t" : Array(cm.getOption("indentUnit") + 1).join(" "), "end", "+input");
    }
}
AI 代码解读

DEMO:

效果:

目录
打赏
0
0
0
0
1
分享
相关文章
在vue里用codemirror实现代码编辑器功能?
在vue里用codemirror实现代码编辑器功能?
596 0
在vue里用codemirror实现代码编辑器功能?
codemirror+js-yaml实现YAML格式的文本编辑器以及校验YAML格式是否符合规范的实现
codemirror+js-yaml实现YAML格式的文本编辑器以及校验YAML格式是否符合规范的实现
3484 0
Mac 技术篇-Geany编辑器批量设置制表符为空格,geany设置默认制表符替换为空格
Mac 技术篇-Geany编辑器批量设置制表符为空格,geany设置默认制表符替换为空格
341 1
Mac 技术篇-Geany编辑器批量设置制表符为空格,geany设置默认制表符替换为空格
IDEA 隐藏编辑器顶部 Tab 栏
版权声明:本文首发 http://asing1elife.com ,转载请注明出处。 https://blog.csdn.net/asing1elife/article/details/82711391 ...
1735 0
markdown编辑器中可以使用的6种空格标记
HTML提供了5种空格实体(space entity),它们拥有不同的宽度,非断行空格( )是常规空格的宽度,可运行于所有主流浏览器。其他几种空格(      ‌‍)在不同浏览器中宽度各异。
1921 0
linux系统下Vi编辑器或者Vim编辑器设置显示行号、自动缩进、调整tab键宽度的技巧?
工作中嫌vim 中一个tab键的宽度太大,linux系统默认,没改之前是一个tab键宽度是8个字符,想改成4个字符, 操作如下:(注意:这是在root用户下)cd ~vim .vimrc添加如下几行:(注意:括号中的不是哦,是我添加的注释说明)set shiftwidth=4    (...
1897 0
vi编辑器,现在vi\vim是文本文件进行编辑的最佳选择,Vim是vi的加强的版本,兼容vi的所有指令,vim编辑器有三种工作模式,一开始进入的是命令模式,命令模式i是插入的意思,两下y+p复制内容
vi编辑器,现在vi\vim是文本文件进行编辑的最佳选择,Vim是vi的加强的版本,兼容vi的所有指令,vim编辑器有三种工作模式,一开始进入的是命令模式,命令模式i是插入的意思,两下y+p复制内容

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等