4

すべてはタイトルにあります。時代遅れの構文で書かれた多くの LaTeX ファイルがあり、それぞれをとに変換したい$foo$と考えています。私はvimを使用しているので、正規表現で十分だと思いますが、スクリプトでも問題ありません。私は周りを見回してきましたが、成功していません。$$bar$$\\(foo\\)\\[bar\\]

foo編集:キリロイドの有用な返信に続いて、これをケースでも使用したいと思います。これは、bar単語だけでなく、スペースを含む式です($明らかに s はありません)。

4

2 に答える 2

4

使用する

:%s/\V$$\v(\_.{-})\V$$/\\[\1\\]/g
:%s/\v\$([^$]+)\$/\\(\1\\)/g

@kirilloid の回答との違いは次のとおりです。

  1. 非常に魔法の ( \v、ほとんどのメタ文字をエスケープする必要を無効にする) および非常に魔法のない (バックスラッシュ以外のすべては文字通りの意味を持つ) モードを使用して、読みやすくします。
  2. $$複数行の文字列に対処する機能(\_に改行を追加します。これは、任意の文字を実際に意味する唯一の構造で.あり、改行は含まれません)。( magic、nomagic、very nomagic モードで) は、 の非貪欲なバリアントです。\_..{-}\{-}*
  3. これらの文字列の間に任意の文字 ( : 改行を除く) を含めることができますが、常にアウトライン式が開始され、常にインライン式が開始$されるようにする必要があります。command の前を で置き換えるか、視覚的に選択し、( will はコマンド ラインの先頭に表示されます) と入力し、先頭に.$$$%{first_line_number},{last_line_number}:'<,'>s/...:%
于 2012-04-09T14:32:36.623 に答える
4

すべてをエスケープする必要があります:$はすでにメタ文字であり、エスケープする必要があります。()+通常は正規表現で機能するため、エスケープして機能させる必要があります。

:%s/\$\$\(\w\+\)\$\$/\\[\1\\]/g
:%s/\$\(\w\+\)\$/\\(\1\\)/g

http://vim.wikia.com/wiki/Search_and_replace

于 2012-04-09T07:06:50.597 に答える