如何使用vim脚本扩展文件中特定模式的数字范围

时间:2013-03-16 15:13:25

标签: vi vim

在搜索列表时,有一些线程显示如何扩展数字范围的可视块。但我的要求是不同的。

在清理LaTeX文件时,我习惯得到\cite{1}-\cite{10}这样的模式,应该更改为\cite{1,2,3,4,5,6,7,8,9,10}。有没有办法使这种清洁更容易,以便vim脚本使用s///gec来处理清理。

例如,我在一个函数(例如s///gec)中添加了多个带有s///geBasicClean()的清洁行,这些行将通过在可视模式下点击<F5>键来执行。我需要将新函数(比如ExpandCite())添加到此函数中。

例如,

function! BasicClean()
  " add a new function ExpandCite() for expanding \cite{1}-\cite{10}
  call ExpandCite()
  s/},\s*\\cite{/,/gec
  " ...
endfunc

如何编写ExpandCite()函数以达到我的要求?

1 个答案:

答案 0 :(得分:1)

您可以使用\=后跟替换命令中的表达式来执行更复杂的替换。

:%s/\\cite{\(\d\+\)}-\\cite{\(\d\+\)}/\='\cite{'.join(range(submatch(1),submatch(2)),',').'}'/ge

如需更多帮助,请参阅:

:h :s\=
:h submatch(
:h range(