在elisp中替换缓冲区中出现的字符串我会做
(search-forward "aaa" nil 't)
(replace-match "bbb")
如果在搜索和替换之间我修改缓冲区,则会发生以下情况:
(match-end 1)
< - (min (point-max) (match-end 1))
(match-beginning 1)
< - (min (match-beginning 1) (match-end 1))
此外,如果(match-end 1)
== (match-beginning 1)
replace-match
调用(match-end 1)
处的插入(两者都更新为指向插入字符串的末尾)而if {{ 1}}> (match-end 1)
(match-beginning 1)
更新replace-match
和(match-beginning 1)
之间的字符串(并且它们会更新以指向插入字符串的开头和结尾)
所以第二个问题是为什么不同的行为?