codemirror 光标定位_CodeMirror 中固定滚动位置

本文介绍了如何在 CodeMirror 中实现打字机模式,通过监听编辑器变化并调整滚动位置,使得光标始终保持在屏幕中央,提高长时间写作的舒适度。示例代码展示了如何在用户输入时执行自定义命令`wpScrollSelectionToCenter`,并将编辑器下方添加额外的空白区域,以确保滚动条功能正常。
摘要由CSDN通过智能技术生成

CodeMirror 是最流行的代码编辑器之一,包括写作软件 WonderPen 在内的很多工具都使用它开发。

与印象笔记等笔记软件不同,WonderPen 的定位是一款写作软件。写作软件与笔记软件之间有很多区别,最大的不同就是前者更专注于提升写作时的体验,而后者则更专注于数据的存储与连接。写作软件中有一个常见的特性,「打字机模式」。

打字机模式

在 Word 等大多数编辑软件中,如果你输入了很多内容,超过一屏之后,光标通常会位于屏幕最下方,这时除非你滚动一下文档,否则光标会一直处于屏幕最下的位置,你的视线也只能一直盯在这个位置,这对需要长时间输入的用户来说并不友好。所谓打字机模式,其实就是像传统的打字机一样,在用户输入时将光标在屏幕上的 y 坐标固定(比如固定在屏幕中间),这样便能保持用户视线高度固定。在技术上来说,就是固定文档的滚动位置。

在 CodeMirror 中,实现这样的功能很简单,下面是一个例子。

首先,我们生成一个 CodeMirror 编辑器实例

const cm = CodeMirror(document.body, {

lineNumbers: true

});

cm.setSize("100%", "100%");

我们并不需要让滚动条一直固定,因为有时候用户需要手动滚动文档,查看上方或下方的内容,因此我们只需要监听它的 change 事件,并在每次事件触发时更新滚动位置。

cm.on("changes", (cm, changes) => updateByTypewriterM

CodeMirror,可以通过设置光标位置来插入信息。你可以使用`getCursor()`方法获取当前光标位置,然后将光标位置作为参数传递给`replaceRange()`方法,将拼接好的信息插入到代码编辑器的光标位置。具体的代码示例如下: ```javascript copyValue(param) { let post1 = this.$refs.myCode.codemirror.getCursor(); console.log('post1', post1); let pos2 = { line: post1.line, //行号 ch: post1.ch //光标位置 }; this.$refs.myCode.codemirror.replaceRange(param, pos2); //替换内容 } ``` 这段代码将会在代码编辑器光标所在位置插入`param`参数所代表的拼接好的信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [vue-codemirror定位光标位置并在光标处插入信息](https://blog.csdn.net/qq_45780380/article/details/121661880)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [CodeMirror](https://blog.csdn.net/weixin_34943809/article/details/114491450)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值