VimはBibTeXファイルの末尾のコンマを覚えるのにどのように役立ちますか?


11

私はかなりの数のBibTeXファイルを編集しており、最後のコンマを定期的に忘れています。

例えば:

@Book{cooke2015british,
 author = {Cooke, Lez},
 title = {British Television Drama},
 publisher = {Palgrave on behalf of the British Film Institute},
 year = {2015},
 keywords = {about}
 address = {London},
 isbn = {978-1844576234}
 }

の後keywords = {about}にコンマを追加するのを忘れたことがわかります。これは、デバッグに時間を費やす必要があることを意味します。Vimに思い出させる方法はありますか?ちなみに、私はbib_autocomp.vimプラグインを持ってます...


私が知っていることではありませんが、次のようなものを試して修正できます:%s/[^ ,]\zs\ze\n\s*[^ }]/,/
佐藤桂

回答:


6

迅速で汚れたソリューション:

:match Error /^\s\+.*,\@<!\ze\n\s\+\w/

同じパターンを使用して、BibTeXファイルの特別な構文を作成することもできます。

使用されている正規表現に関するいくつかの説明:

  1. ^\s\+ インデントされたキーワードを検索します。
  2. \ze 次の行がマークされないようにパターンマッチングを停止します。
  3. ,\@<!\n カンマで終わっていない行を検索します。
  4. \n\s\+\w 現在スキャンされている後に新しいエントリがあることを保証します。

同じパターンを使用してvimgrep、次のようにエラーのある行の間をジャンプできます。

:vimgrep /^\s\+.*,\@<!\ze\n\s\+\w/ %

クイックフィックスウィンドウが自動的に開かない場合は、を使用して開くことができます:copen。そして:cnext:cpreviousエラー間をジャンプするために使用することができます。


これはいい!nを押すと、どういうわけかそれを次のエラーにジャンプさせることができますか?
Kristian Nordestgaard、2015年

回答を更新して、あなたの要求を含めました。それがあなたのために働くかどうか見てください。
Vitor 2015年

0

1つの可能性は.vimrc、不足しているものを追加するショートカットを定義することです,

例:

:map \q  :%s/\v([}"])(\s*\n\s*\S+\s*\=)/\1,\2/<CR>

終了する\q前またはデバッグするときに使用します。


私のために働いていませんか?私は得るE10: \ should be followed by /, ? or & 24,1 60%が、おそらく私はそれを間違っているのですか?
Kristian Nordestgaard、2015年

@KristianNordestgaard、.vimrc最初の ":"を削除する必要があります。試してみてくださいmap \q :%s/\v([}"])(\s*\n\s*\S+\s*\=)/\1,\2/e<CR><CR>
JJoao
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.