如果光标不在e中的r上,则用r替换regexp r

假设您在emacs缓冲区B中访问文件F,让r和R是一些替换的正则表达式。 现在我想用r定义的相应替换字符串R_i替换所有匹配r(在某些区域中)匹配的字符串r_i,以满足以下条件:

  • 如果我保存F,则上述替换不得更改F的内容
  • 如果光标位于通过R替换的某些文本上,则应显示与r匹配的原始r_1。 如果我这样做,编辑r_1到r_2并将光标移开,r_2应该被相应的R_2替换,如果它匹配r。
  • 如果可以突出显示(例如不同的颜色或下划线...)替代品并根据r控制此突出显示,那将会很好。

    我猜这样的功能已经存在,但我不知道它是如何被调用的。 我上面所描述的在某种程度上类似于编辑胶乳文件的预览模式。


    看起来你只是想让一些字符串以不同的方式显示,而不是实际的替换。 我认为font-lock-mode可以处理您的要求。 例如,通过在缓冲区中对此进行评估,可以在缓冲区中将所有出现的单词“pi”显示为希腊字母π:

    (font-lock-add-keywords 
      nil `(("<pi>" (0 `(face default display "π")))))
    (push 'display font-lock-extra-managed-props)
    

    Ch v字体锁定关键字将提供更多细节。


    我不知道任何用户级别的功能。 有hi-lock-mode可让您突出显示一些文字,但不会显示替代文字。

    预览模式使用的程序员级别功能以及导致从缓冲区中的内容显示不同文本的其他程序包称为覆盖。 如果你想对它进行编码,看起来应该是这样的:对于每一次出现的r,在这个r上重叠一个原始文本r_1作为help-echo属性,r_2作为display属性,一个modification-hooks对任何变化作出反应的属性,以及可能的facecategory属性。

    链接地址: http://www.djcxy.com/p/63861.html

    上一篇: replace regexp r by R if cursor is not on r in emacs

    下一篇: Emacs custom background color by mode