Codemirror历史记录大小是否有限制?能否自定义调整?
CodeMirror 历史记录的大小限制及自定义方法
嘿,这个问题问得很实在!刚好我对CodeMirror的历史管理机制比较熟悉,给你详细说说:
默认有历史记录上限
CodeMirror的历史记录是由History插件负责管理的,默认情况下它会限制最大历史步骤数为100步。也就是说,当你的编辑操作超过100步后,最早的那些历史记录会被自动清理掉,不会无限制累积,刚好能避免你担心的“超大历史文件”问题。完全可以修改这个限制
不管你用的是CodeMirror 6还是旧版的CodeMirror 5,都能自定义调整这个上限值:- 如果你用的是CodeMirror 6,在初始化编辑器的
extensions里配置history插件时,传入historySize参数即可:import { EditorState } from "@codemirror/state"; import { history, historyKeymap } from "@codemirror/history"; import { keymap } from "@codemirror/view"; import { defaultKeymap } from "@codemirror/commands"; // 为每个独立的Doc创建对应的编辑器状态时配置历史上限 const createEditorState = (initialDoc) => { return EditorState.create({ doc: initialDoc, extensions: [ history({ historySize: 300 }), // 这里把历史上限改成300步 keymap.of([...defaultKeymap, ...historyKeymap]) ] }); }; - 如果你用的是CodeMirror 5,则在初始化编辑器时通过
history选项的size字段设置:// 为每个文件创建独立编辑器时配置历史上限 const createEditor = (textareaId, initialContent, historyLimit) => { return CodeMirror.fromTextArea(document.getElementById(textareaId), { lineNumbers: true, value: initialContent, history: { size: historyLimit } // 自定义历史步数上限 }); };
- 如果你用的是CodeMirror 6,在初始化编辑器的
针对多文件的小技巧
因为你是为每个文件用独立的CodeMirror.Doc存储历史,那刚好可以给每个文件对应的历史插件设置不同的historySize——比如对大文件设小一点的上限,小文件设大一点,这样能更灵活地控制每个文件的历史记录大小,完全不用怕历史数据膨胀。
内容的提问来源于stack exchange,提问作者Eugene Krakos
相关产品推荐
相关产品推荐

