作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想找到一行,然后匹配该行中的几个单词,但与其替换它们,我更愿意简单地保存它们(通过附加到寄存器,或导出到文件)。
在这方面反向引用(即 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/
我是一名优秀的程序员,十分优秀!