gpt4 book ai didi

vim - 全局子匹配()?

转载 作者:行者123 更新时间:2023-12-01 12:58:17 25 4
gpt4 key购买 nike

我想找到一行,然后匹配该行中的几个单词,但与其替换它们,我更愿意简单地保存它们(通过附加到寄存器,或导出到文件)。

在这方面反向引用(即 submatch(1) 或\1)是否可行,或者只能通过替换?我意识到我可以替换回我正在处理的文件 - 改变它 - 但我更愿意导出它。

有没有办法在不损坏文件的情况下在替换中调用一个函数(保存子匹配)?或者,最好使用全局搜索来捕获该行的一部分,然后将其作为参数传递给一个函数调用,该函数调用将根据需要进行保存?

最佳答案

尝试

:%s/pattern \(saved portion\)/\=[submatch(0), SaverFunc(submatch(1))][0]/

:%s/pattern \(saved portion\)\zs/\=SaverFunc(submatch(1))[-1]

.在最后一种情况下,SaverFunc 必须返回字符串或数字(如果没有明确的 :return 语句,它将返回数字 0)。返回哪个字符串或数字并不重要:string_or_number[-1] 始终扩展为空字符串。

关于vim - 全局子匹配()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8371903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com