-1

リストを検索すると、数値範囲の視覚的なブロックを拡張する方法を示すスレッドがあります。しかし、私の要件は異なります。

LaTeX ファイルをクリーニングしているときに、\cite{1}-\cite{10}どれを に変更する必要があるかのようなパターンを取得していました\cite{1,2,3,4,5,6,7,8,9,10}。このクリーニングを簡単にして、vim スクリプトが を使用してクリーニングを行う方法はありますかs///gec?

たとえば、ビジュアル モードでキーを押すと実行される1 つの関数 (たとえば) に、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()私の要件を達成するためにどのように関数を書くことができますか?

4

1 に答える 1

1

\=置換コマンドで式を続けて使用すると、より複雑な置換を行うことができます。

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

詳細については、次を参照してください。

:h :s\=
:h submatch(
:h range(
于 2013-03-16T19:39:29.783 に答える