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/ %

Quickfix 창이 자동으로 열리지 않으면을 사용하여 열 수 있습니다 :copen. 그리고 :cnext:cprevious오류 사이를 이동하는 데 사용할 수 있습니다.


이것은 좋다! 어떻게하면 n을 누를 때 다음 오류로 넘어갈 수 있습니까?
Kristian Nordestgaard

요청한 내용을 포함하도록 답변을 업데이트했습니다. 그것이 당신을 위해 작동하는지 확인하십시오.
Vitor

0

하나의 가능성은 .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

@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.