Emacs minibuffer中搜索/替换字符串的独特界面

4
当我使用query-replace进行替换时,比如将"abc"替换为"def",然后再次调用query-replace时,我会得到一个迷你缓冲区,它所有的显示都是同一种字体。
  Query replace (default abc -> def):

如果“abc”和“def”以不同的字体显示,这行文字将更易于阅读。如果搜索或替换字符串中包含空格、括号或箭头等字符,则更加明显,因为它们都会与周围的提示混在一起。我期望默认提供一个不同的字体来显示搜索和替换字符串。然而,我无法在文档中找到任何允许单独自定义用于显示搜索和替换字符串的字体的内容。有人可以给我提供一些代码,以便我可以使用它来实现吗?

听起来不错。你为什么不建议将其作为Emacs的一项添加呢?我相信你可以使用“帮助->发送错误报告”菜单项来实现这个建议。 - Lindydancer
@Alan:你是不是在说迷你缓冲区而不是模式行? - TacticalCoder
问题出在replace.el中的query-replace-read-from函数。是的,@TacticalCoder 是正确的——问题在于迷你缓冲区,而不是模型行。可以使用字体锁定来针对 query-replace-read-from 的不同元素或类似叠加层/文本属性的东西。修改布局格式也是可能的。我们已经知道可以更改 minibuffer-prompt 的字体,并使用 enter/exit-minibuffer-setup 设置迷你缓冲区默认字体。因此,您提出的做法应该是可行的。 - lawlist
1个回答

2
使用库replace+.el -- 描述在这里
另请参阅Emacsbug #16136,这是一个相关的增强请求。问题在于,用户目前只能决定整个提示是否有面孔。 (如果是这样,他们可以自定义该面孔。)所需的是能够做到这一点,但也让该面孔退居于可能已经赋予特定提示字符串部分的任何面孔的后面。
replace+.el关闭整个提示的面孔,并在不同的面孔中突出显示重要部分的提示(正是您请求的部分),您当然可以自定义这些面孔。如果实现增强请求#16136,则其余提示可以保持在正常提示面(minibuffer-prompt)中。
很难相信Emacs的设计如此短视,但的确如此。而且它是用C代码实现的,因此不太适合用户改进。让我们期待修复。同时,您可以加载replace.el,但无法在其余提示中使用minibuffer-prompt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接