我正在尝试学习更多地使用键盘宏,但不知道如何解决这个问题。
我需要选择一个区域,然后在该区域上运行两个查询替换。每次地区都会不同,但查询替换将是相同的。
问题出现是因为第一个查询替换(或replace-string
)删除了活动区域。如果我使用C-u C-SPC,则显示开始标记已保存,但该点未保存,因此活动区域不可用于第二次替换操作。
如何将删除活动区域作为副作用的两个操作应用于键盘宏中的同一区域?
由于我不执行所描述的任务,因此我不确定我是否可以为您提供最快的解决方案,但这里至少有两种可行的方法。
此选项涉及在执行查询替换或您想要对该区域执行的任何操作之前使用缩小来减少活动区域的缓冲区。工作流程如下:
您应该能够愉快地将其应用于任何突出显示的区域。
顺便说一句:narrow-to-region 和 widen 具有 C-x n n(narrow-to-region) 和C-x n w(widen) 的默认绑定,因此您可以在未更改键绑定的情况下使用它们
此选项涉及在“销毁”该区域之前使用寄存器来存储该区域的位置。实际的工作流程看起来像
你缺少的是exchange-point-and-mark
C-x C-x. 这具有重新激活标记的效果。