这里是相对较新的 linux/vim/regex 用户。我想使用正则表达式搜索数字模式,捕获它,然后使用捕获的值将字符串附加到上一行。换句话说......我有一个格式的文件:
title: description_id
text: {en: '2. text description'}
我想从文本字段中捕获值并将它们附加到标题字段的开头...产生如下内容:
title: q2_description_id
text: {en: '2. text description'}
我觉得我遇到了一种在搜索和替换中引用其他行的方法,但现在找不到它。或者宏可能是合适的。任何帮助将不胜感激...谢谢!
最佳答案
也许是这样的:
:%s/\(title: \)\(.*\n\)\(text: \D*\)\(\d*\)/\1q\4_\2\3\4/
我们在哪里搜索 4 个部分:
“标题:”
- 行的其余部分和
\n
"text: "
以及行中直到下一个数字的所有内容- 行中第一串连续数字
然后把它们吐出来,在 1) 和 2) 之间插入 4)。
编辑:Peter 在评论中提供的更短的解决方案:
:%s/title: \zs\ze\_.\{-}text: \D*\(\d*\)/q\1_/
关于regex - vim:使用正则表达式在不同的行上搜索、捕获和替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35465394/