前情提要
我在做一个支持 markdown 的云笔记项目时,显示代码需要用到 codemirror 以支持 tab 进行缩进(原本用的是 textarea 不支持 tab 缩进),然后再把内容经过 markdown-it-vue 转换成代码高亮。
出现的问题
在 codemirror 区域内正常写代码,使用 tab 缩进时是正常的,是2个字符
经过 markdown-it-vue 转换后就成这样了,缩进变成8个字符
解决方法
为了解决这个问题我是把 codemirror 和 markdown-it-vue 的文档都过了一遍,后来又换成了 markdown-it 试了试,问题依旧,所以我把出问题的地方锁定在了 codemirror,找了几个小时,所幸还是被我找到了,废话不多说,直接入正题。
在 codemirror 里是有个配置叫cmOptions的,有许许多多的配置项,解决这个问题要用到的配置项是 extraKeys: object,它可以把对应键位映射成其他的字符替换掉(又可以当成是自定义快捷键),具体用法如下
第一个配置项" "里,看需求,按一下 tab 缩进几个字符,就输入几个空格,问题解决。
我参考了这个问题下的评论区(ps:似乎是个山寨的 Stack Overflow)
补充
如何在 codemirror 里添加占位字(placeholder),直接看代码
完成。