Emacs 在dired中查找并替换不带regexp的文件

Emacs 在dired中查找并替换不带regexp的文件,emacs,replace,dired,Emacs,Replace,Dired,我试图将一个网站转换成一本电子书,在我想要删除的每一页的开头都有一大块html。可以想象,使用Q不会导致匹配,因为大数据块中的某些内容没有正确转义。当我尝试用正则表达式来解决这个问题时,我得到了堆栈溢出 我真正需要的是一种方法,以通常的方式在没有正则表达式的情况下查找和替换dired。这是可能的吗?regexp行为在理论上是可选的,但函数在一些地方调用了有问题的硬代码。我认为最简单的解决方案是制作运行时不设置regexp标志的副本 (加载后评估“直接 '(定义键方向模式映射(kbd“C-C Q”

我试图将一个网站转换成一本电子书,在我想要删除的每一页的开头都有一大块html。可以想象,使用
Q
不会导致匹配,因为大数据块中的某些内容没有正确转义。当我尝试用正则表达式来解决这个问题时,我得到了堆栈溢出


我真正需要的是一种方法,以通常的方式在没有正则表达式的情况下查找和替换dired。这是可能的吗?

regexp行为在理论上是可选的,但函数在一些地方调用了有问题的硬代码。我认为最简单的解决方案是制作运行时不设置regexp标志的副本

(加载后评估“直接
'(定义键方向模式映射(kbd“C-C Q”)'my dired do query replace))
(取消我的直接执行查询替换(从到(&可选分隔符))
对所有标记的文件执行从到的“查询替换”。
第三个以arg分隔的(前缀arg)表示仅替换以单词分隔的匹配项。
如果退出(\\[keyboard quit]、RET或q),则可以恢复查询替换
使用\\[tags loop continue]命令。“
(互动
让((公共)
(查询替换读取参数)
“在标记的文件中进行查询替换”nil t)
(列表(第n个0通用)(第n个1通用)(第n个2通用)))
(需要“方向辅助”)
(文件(dired-get-marked-files nil-nil'dired-nondirectory-p))
(let((缓冲区(获取文件缓冲区文件)))
(如果(和缓冲区)(带当前缓冲区
缓冲区只读)
(错误“文件“%s”访问为只读文件”))
(我的标签查询替换)
from to delimited'(dired get marked files nil nil'dired-nondirectory-p)))
(取消我的标记查询替换(从到(&O)可选分隔文件列表表单)
“对标记表中列出的所有文件执行从到的“查询替换”。
第三个以arg分隔的(前缀arg)表示仅替换以单词分隔的匹配项。
如果退出(\\[keyboard quit]、RET或q),则可以恢复查询替换
使用\\[tags loop continue]命令。
第四个arg FILE-LIST-FORM非nil表示初始化替换循环。
为了兼容性,接受第五个和第六个参数START和END
带有“query replace”,并被忽略。
如果FILE-LIST-FORM为非nil,则它是要求值的表单
生成要搜索的文件列表。
另请参阅变量“tags file name”的文档。”
(交互式(查询替换读取参数“标记查询替换”nil t))
(需要“ETag”)
(setq标记循环扫描`(let)(除非(等于从(向下从))
“((案例折叠搜索无)))
(如果(从零开始向前搜索)
当我们找到一根火柴时,往后退
;到开头,执行替换
我会看到的。
(转到字符(匹配开始0)))
标记循环操作`(执行替换',从',到t nil',分隔
nil多查询替换映射)
(标记循环继续(或文件列表表单t)))

完美。唯一的抱怨(我敢肯定regexp-one会发生这种情况)是当您按下!它只对当前缓冲区完成,而不是对所有文件完成。还有,2分钟的压制!这对我来说已经足够了!是的,它实际上是原始函数的副本,只是对使用非regexp功能做了一些小的更改(还有一些
require
s,因为其他代码会自动加载必要的库)。我不知道这个实现,但在原始dired
Q
命令中,您可以按
Y
(大写
y
)处理所有剩余文件。