在搜索列表时,有一些线程显示如何扩展数字范围的可视块。但我的要求是不同的。
在清理LaTeX文件时,我习惯得到\cite{1}-\cite{10}
这样的模式,应该更改为\cite{1,2,3,4,5,6,7,8,9,10}
。有没有办法使这种清洁更容易,以便vim脚本使用s///gec
来处理清理。
例如,我在一个函数(例如s///gec
)中添加了多个带有s///ge
和BasicClean()
的清洁行,这些行将通过在可视模式下点击<F5>
键来执行。我需要将新函数(比如ExpandCite()
)添加到此函数中。
例如,
function! BasicClean()
" add a new function ExpandCite() for expanding \cite{1}-\cite{10}
call ExpandCite()
s/},\s*\\cite{/,/gec
" ...
endfunc
如何编写ExpandCite()
函数以达到我的要求?
答案 0 :(得分:1)
您可以使用\=
后跟替换命令中的表达式来执行更复杂的替换。
:%s/\\cite{\(\d\+\)}-\\cite{\(\d\+\)}/\='\cite{'.join(range(submatch(1),submatch(2)),',').'}'/ge
如需更多帮助,请参阅:
:h :s\=
:h submatch(
:h range(