1

我已经使用 Emacs 一段时间了,正在尝试 Icicles。当我运行命令序列时

C-c`\([a-z]*\)

S-TAB

C-| x\1y

它将暂存缓冲区从

;; This buffer is for notes you don't want to save, and for Lisp evaluation.
;; If you want to create a file, visit that file with C-x C-f,
;; then enter the text in that file's own buffer.

;; Xy xy xy xy xy xy xy'xy xy xy xy, xy xy Xy xy.
;; Xy xy xy xy xy xy xy, xy xy xy xy XY-xy XY-xy,
;; xy xy xy xy xy xy xy'xy xy xy.

我的理解是,它应该在每个单词的开头附加一个“x”,在每个单词的末尾附加一个“y”。我在这里做错了什么?我已经尝试过这个emacs -Q并得到了相同的结果。此外,icicle-search-replace-literally-flag它的默认值不变nil。我究竟做错了什么?谢谢!

编辑:对不起,我在原帖的正则表达式中省略了组;但是,我确实在测试中使用了它,并且仍然得到相同的结果。

4

2 回答 2

2

我不使用冰柱,但效果可以用普通的query-replace-regexp.

问题是您只是没有在替换中引用的正则表达式中定义任何组。\1因此,替换字符串中的组引用为空。

此外,您应该使用[a-z]+而不是[a-z]*因为[a-z]*也匹配您可能不想要的空字符串。

要将您要引用的内容放入一个组中,请用括号括起来\(\)。在您的示例中,正则表达式看起来像\([a-z]+\). 使用此正则表达式,您可以直接使用替换字符串。

另一种方法是保留正则表达式,并在替换字符串中使用\&而不是引用整个匹配项。\1

于 2013-12-14T15:46:37.500 回答
1

确保您的文件版本在 2013 年 12icicles-cmd2.el月 10 日之后发布。\N我在那个日期修复了一个错误 wrt替换。

其他建议:

  • 慢慢进行,而不是立即跳入复杂的替换等。冰柱搜索和替换与您可能习惯或期望的不同。

  • 检查影响Icicles搜索和替换的所有用户选项的当前值。

于 2013-12-14T23:49:29.837 回答