信息来源:1
对于emacs专业版用户:
- 调用dired列出目录中的文件,或者如果需要所有子目录,则调用find-dired。
- 标记所需的文件。您可以通过键入【%m】来用正则表达式标记。
- 键入Q以调用dired-do-query-replace-regexp。
- 输入查找正则表达式并替换字符串。〔☛普通elisp regex模式〕
- 对于每次出现,键入y替换,输入n跳过。键入【Ctrl + g】可放弃整个操作。
- 输入!要在不询问的情况下替换当前文件中的所有匹配项,请N跳过当前文件其余部分的所有可能替换。(仅N是emacs 23)
- 要对所有文件进行替换而无需进一步询问,请键入Y。(仅适用于Emacs 23)
- 调用ibuffer列出所有打开的文件。键入【* u】标记所有未保存的文件,键入S保存所有标记的文件,键入D关闭所有文件。
Emacs初学者分步指南
选择目标文件
通过在命令行界面提示符中键入“ emacs”来启动emacs。(或者,如果您在“图形用户界面”环境中,则双击Emacs图标)
在目录中选择文件
首先,您需要选择要进行替换的文件。使用图形菜单〖文件▸打开目录〗。Emacs将要求您提供目录路径。键入目录路径,然后按Enter。
现在,将为您显示文件列表,现在您需要标记要使正则表达式查找/替换可用的文件。您可以通过将光标移至所需文件来标记文件,然后按m。按下u取消标记。(要列出子目录,请将光标移到该目录并按i。子目录的内容将在底部列出。)要用正则表达式标记所有文件,请键入【%m】,然后键入您的正则表达式模式。例如,如果要标记所有HTML文件,则键入【%m】,然后键入.html $。(您可以在图形菜单“标记”中找到标记命令的列表(当您处于转向模式时,将显示此菜单)。
在目录及其所有子目录中选择文件
如果要查找/替换目录中的文件(包括数百个子目录),请使用以下方法选择所有这些文件。
致电查找。(您可以通过按【Alt + x)来调用命令),然后键入目录名称⁖/ Users / mary / myfiles
注意:如果在Unix非图形文本终端上使用emacs,并且【Alt + x】不起作用,则等效的击键为【Esc x】。
Emacs将提示您“ Run find(with args):”。如果需要对所有HTML文件进行替换,请键入-name“ * html”。如果您不关心哪种文件,而只关心该目录下的所有文件,则输入“ -type f”。
现在,如上所述标记文件。
交互式查找/替换
现在,您准备好进行交互式查找替换。为了简单起见,假设您只想用“ super”代替“ quick”。现在,调用dired-do-query-replace-regexp。它将提示您输入正则表达式字符串和替换字符串。输入“快速”,输入,然后输入“超级”。
现在,emacs将使用您的模式并检查文件,并在发生匹配时停止并向您显示。发生这种情况时,emacs会提示您,您可以选择进行更改或跳过更改。要进行更改,请键入y。要跳过,请键入n。如果您只是想让emacs继续并对当前文件进行所有此类更改,请键入!。
如果要取消整个操作而不保存所做的任何更改,请键入【Ctrl + g】,然后使用菜单〖文件▸退出Emacs〗退出emacs。
保存更改的文件
现在,在经历了上述考验之后,您还需要执行另一个步骤,那就是保存更改后的文件。
如果使用的是emacs 22版或更高版本,请调用ibuffer进入缓冲区列表模式,然后键入【* u】标记所有未保存的文件,然后键入S来保存所有文件。(就是shift-s)
如果使用的是emacs版本21,则可以执行以下操作:调用list-buffers,然后将光标移至要保存的文件并键入s。它将标记文件以供以后保存操作。输入u取消标记。完成后,键入x以执行所有标记为保存的文件的保存。(在emacs中,打开的文件称为“缓冲区”。忽略那里的其他内容。)
除了上述选项之外,还可以调用save-some-buffers [Ctrl + xs]。然后emacs将显示每个未保存的文件,并询问是否要保存它。
注意:emacs的正则表达式与Perl或Python的正则表达式不同,但相似。有关摘要和常见模式,请参阅:Emacs Regex。