• 请不要在回答技术问题时复制粘贴 AI 生成的内容
q84629462
V2EX  ›  程序员

[CodeMirror] 原始文本数据中有占位符(例如:{1}),想在 CodeMirror 显示代码的时候对占位符进行映射,显示为别的字符串(例如:$globalVariable1),基于不替换文本的条件下该如何实现?

  •  
  •   q84629462 · Apr 25, 2015 · 3661 views
    This topic created in 4062 days ago, the information mentioned may be changed or developed.

    声明:
    占位符:假设为{1},{2},{3}这种格式,当然也可以为{a},{b},{c},{d};
    CodeMirror:网页富文本编辑器,http://codemirror.org;
    CM:CodeMirror的缩写;

    特别声明:包含占位符的代码文件并非作为代码运行的用途。

    要求:
    1、多个代码文本中共用一些全局变量名,在某个全局变量名的名字改变后,其它代码文本在CM中打开后优雅地更新为新的全局变量名;
    2、全局变量名要高亮;
    附加要求:
    1、在CM中,可以按一次退格键或del键删除整个全局变量名;
    2、在CM中,不能更改全局变量名,即在CM中全局变量名不接受焦点;

    附加要求结合起来通俗的去理解呢,就是把全局变量名理解为编辑器中的一幅图片对象,无法在编辑器中修改,按一次退格键或del键就把一幅图片删除了。

    所以我想到了本文题目中的方法,就是用占位符代替全局变量名存放在文件中。
    也就是说全局变量名在真实的文件数据中就是占位符,当用CodeMirror编辑器打开这个文本时,最终在CodeMirror中看到的是占位符变为一个个全局变量名。

    最后来了:CM中怎么把占位符映射为全局变量名?附加要求怎么去实现?

    如果没有答案的话,只能使用双替换大法了:读取文本后把占位符替换为对应的全局变量名再显示在CM中,保存前把全局变量名替换为占位符再保存。
    但替换大法会有误伤,例如再PHP中,单引号'$a'和双引号"$a"中的$a就有不同的意义,这个误伤也不太容易解决。

    No Comments Yet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   6025 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 01:59 · PVG 09:59 · LAX 18:59 · JFK 21:59
    ♥ Do have faith in what you're doing.