Search Emacs。如何剪切所有包含的文本;一些“文本/XXX”;从另一个文本?

Search Emacs。如何剪切所有包含的文本;一些“文本/XXX”;从另一个文本?,search,replace,emacs,Search,Replace,Emacs,Windows 10(64位),Emacs 25.1 假设我有文本: aa11aaa aaaaa "api/method1" bbbbbbb dddeeee ee "api/method2" ddddddd ee2222ezzzzzzzzzzzzzzzzzz "api/method1" eeeeeee aaaaaaa222222222222"api/method3" fffffff xwwwwxx "api/method4" bbbbbbb 我想剪切所有包含“api/XXX”的文本 ,

Windows 10(64位),Emacs 25.1

假设我有文本:

    aa11aaa aaaaa "api/method1" bbbbbbb
dddeeee ee "api/method2" ddddddd
ee2222ezzzzzzzzzzzzzzzzzz "api/method1" eeeeeee
aaaaaaa222222222222"api/method3" fffffff
xwwwwxx "api/method4" bbbbbbb
我想剪切所有包含“api/XXX”的文本

,其中XXX是方法名称(例如method4

。因此,结果必须是:

aa11aaaaaabbbbb
dddeeeeeddddddd
EE2222Ezzzzzzzzzzzzzzeeeeee
aaaaaa2222222fffffff
xwwwxx bbbbb


我想使用Emacs的内置功能(无需编写自定义elisp脚本或Emacs宏)。

您要做的是搜索该字符串并将其替换为空字符串(无字符):

使用要开始搜索和替换的光标,执行以下操作:

M-x replace-string RET api/XXX RET RET
或者,如果需要匹配正则表达式,请改用命令
replace regexp

或者,如果要单独检查每个搜索命中并告诉Emacs是否要替换它,请使用
query replace
M-%
)或
query replace regexp
C-M-%
)。你可以点击
查询时,从当前位置开始到处替换

使用
C-hf
并输入命令名以获取有关该命令的更多信息。例如,
C-h f replace string
告诉您:

替换字符串
replace.el

(replace-string FROM-STRING TO-STRING &optional DELIMITED START END BACKWARD)
此功能仅供交互使用; 在Lisp代码中,使用
向前搜索
替换匹配

将出现的
FROM-STRING
替换为
TO-STRING

如果
case replace
case fold search
nil
FROM-STRING
没有大写字母。 (保留大小写意味着如果匹配的字符串都是大写或大写, 然后它的替代品被升级或资本化。)

如果
query replace skip read only
为非-
nil
,则忽略只读匹配, 如果
search invisible
nil
,则忽略隐藏的匹配项,并忽略更多 使用isearch筛选器谓词进行匹配

如果
replace lax whitespace
为非-
nil
,则字符串中的一个或多个空格 要替换的将匹配 regexp在
搜索空白regexp

如果
replace char fold
为非nil,则匹配使用字符折叠, i、 它忽略了变音符号和等价词之间的其他差异 字符串

第三个arg
分隔(如果是交互式的,则前缀为arg),如果不是nil,则表示替换
只有由单词边界包围的匹配项。负前缀arg表示
向后替换

开始
结束
之间的区域上操作(如果两者都是
,则从点开始 到缓冲区的末尾)。以交互方式,如果瞬态标记模式为 已启用且标记处于活动状态,对区域的内容进行操作; 否则,从点到缓冲区可访问部分的末尾

使用
M-n
将最后一个增量搜索字符串拉入微型缓冲区 从字符串
读取

在Lisp程序中使用此函数通常是错误的

您可能需要这样一个循环:

  (while (search-forward FROM-STRING nil t)
    (replace-match TO-STRING nil t))
运行速度更快,不会设置标记或打印任何内容。 (如果
FROM-STRING
可以匹配空字符串,则可能需要更复杂的循环 并且
TO-STRING
也为空。)