emacs - 如果 emacs 中光标不在 r 上,则用 R 替换正则表达式 r

标签 emacs elisp

假设您访问 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 控制此突出显示,那就太好了。

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

最佳答案

看起来您只是希望一些字符串以不同的方式显示,而不是任何实际的替换。我认为 font-lock-mode 可以满足您的要求。例如,您可以通过在缓冲区中求值来将缓冲区中出现的所有单词“pi”显示为希腊字母 π:

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

C-h v font-lock-keywords 将提供更多详细信息。

关于emacs - 如果 emacs 中光标不在 r 上,则用 R 替换正则表达式 r,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3495044/

相关文章:

emacs - 有提示的查找文件?

lisp - 修改列表并将其返回到 lisp 中的函数中

emacs - 函数名称中的双减号 (--) 约定在 Emacs Lisp 中意味着什么

emacs - 覆盖Emacs 23字体替换

emacs - 在哪里可以下载 Emacs APEL 包?

emacs - 我应该从 ErgoEmacs 开始学习 emacs 吗?

Emacs:将 eval 的输出发送到新缓冲区

emacs - 选择窗口时做一些事情

emacs - 是否有用于 VI '.' 命令的 Emacs 模拟来重复上次输入的文本

Emacs 自动完成错误 : Symbol's value as variable is void: ac-modes