我的問題是關於一個非常具體的搜索和替換模式,但我希望找到更一般情況下的答案。我目前正在研究一些LaTeX幻燈片,其中有一些疊加層,我需要增加一個或多個整數。一個示例文本:vim中分隔符之間的數字遞增
\only<1,5-7,9>{hello 11}
總之,只命令只顯示你好上幻燈片編號1,圖5至7和9在2位插入滑動經過11,我需要上述滑動所有幻燈片2增加。這是我想出了:
:.,$s/\d\+/\=str2float(submatch(0))>2?submatch(0)+1:submatch(0)/g
從當前行到文件的末尾,它增加1 所有整數以上2這意味着,11也增加,這是不是我想:
\only<1,6-8,10>{hello 12}
Q1:我怎麼能只匹配,並增加了分隔符 '<' 和 '>' 之間的整數?
最後,我想能夠細化搜索模式逐漸由指定模式和應用其他模式的結果。例如,我首先匹配給定示例文本中的分隔符之間的文本。
/<[^<>]*>
這將突出我所引述的文字:
\only"<1,5-7,9>"{hello 11}
並立即申請我原來的解決方案來增加分隔符之間的數字。我可以比較一下在管道符號的shell中將grep命令鏈接在一起,並使用每個新的grep命令改進結果。
Q2:這是鏈接的vim搜索模式可能嗎?
更新:弗洛里斯的解決方案非常接近。事實上,它解決了原來的問題,但我沒有提到所有要求。它們是:
- The delimiters are guaranteed to be on one line, e.g., <1,5-7,9>.
- Multiple delimited parts can be on one line, e.g.:
hello 11\only<1,6-7,9>{hello 11}\only<1,6-7,9>{hello 11}
第二個要求失敗,因爲該解決方案目前正在返回:
hello 12\only<1,7-8,10>{hello 12}\only<1,7-8,10>{hello 11}
只的「>」中最後一次出現後忽略整數。我想要的結果是:
hello 11\only<1,7-8,10>{hello 11}\only<1,7-8,10>{hello 11}
感謝您的任何幫助!
你是真的試圖讓這種困難不是嗎?!...我認爲如果'<>'之間只有逗號,連字符和數字,我可以解決它,但是現在不能測試,並且會就像確認之前,我做了另一個「接近」的答案... – Floris
我嘗試: )我想代替< and >之間的數字,你可以將它看作由字符[<>, - ]包圍的數字。 – gospes