Vim BibTeX dosyalarındaki virgülleri hatırlamama nasıl yardımcı olabilir?


11

Birkaç BibTeX dosyasını düzenlerim ve düzenli olarak virgülleri unuturum:

Örneğin:

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

Sonra virgül eklemeyi unuttuğumu göreceksiniz keywords = {about}, bu da hata ayıklama için zaman harcamak zorunda olduğum anlamına gelir. Vim'in hatırlamamın bir yolu var mı? Bu arada, bib_autocomp.vim eklentisine sahibim ...


Ben biliyorum, ama bunu düzeltmek için böyle bir şey deneyebilirsiniz değil o: :%s/[^ ,]\zs\ze\n\s*[^ }]/,/.
Sato Katsura

Yanıtlar:


6

Hızlı ve kirli çözüm:

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

Aynı deseni kullanarak BibTeX dosyaları için özel bir sözdizimi de oluşturabilirsiniz.

Kullanılan düzenli ifadeyle ilgili bazı açıklamalar:

  1. ^\s\+ girintili anahtar kelimeler arar.
  2. \ze desen eşleşmesini bir sonraki satır işaretlenmeyecek şekilde durdurur.
  3. ,\@<!\n virgülle bitmeyen satırları arar.
  4. \n\s\+\w o anda taranan yeni bir giriş olduğunu garanti eder.

Aynı desen, vimgrepaşağıdaki gibi kullanarak hatalı çizgiler arasında atlamak için kullanılabilir :

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

Hızlı düzeltme penceresi otomatik olarak açılmazsa, kullanılarak açılabilir :copen. Ve :cnextve :cprevioushatalar arasında geçiş yapmak için kullanılabilir.


Bu iyi! N tuşuna bastığımda bir şekilde bir sonraki hataya atlayabilir miyim?
Kristian Nordestgaard

Cevabı istediğinizi içerecek şekilde güncelledim. İşinize yarayıp yaramadığına bakın.
Vitor

0

Bir olasılık .vimrceksik olanı eklemek için bir kısayol tanımlamaktır,

Misal:

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

ve \qayrılmadan önce veya hata ayıklama sırasında kullanın .


Benim için çalışmıyor mu? Anlıyorum E10: \ should be followed by /, ? or & 24,1 60%, ama belki de yanlış yapıyorum?
Kristian Nordestgaard

@KristianNordestgaard, .vimrcbaşlangıçtaki ":" yi kaldırmak zorundayız. Lütfen deneyinmap \q :%s/\v([}"])(\s*\n\s*\S+\s*\=)/\1,\2/e<CR><CR>
JJoao
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.