2014-04-28 17 views
19

Używam Vima do pisania moich plików .tex, ale mam problem z sprawdzaniem pisowni w Vimie. Czasami nie sprawdza słów i myślę, że może to być z następującego powodu.Vim pisownia nie zawsze działa w pliku .tex. Sprawdź region w Vim

Ponieważ Vim najwyraźniej nie powinien sprawdzać wszystkich słów w dokumencie .tex, na przykład nie w preambule, sprawdza tylko pisownię w niektórych regionach (w sensie składni). Jak już zebrałem z here, jednym z tych regionów jest texSectionZone. Regiony te mogą stać się dość duże, w rzeczywistości często jest to sekcja, więc Vim ma problem ze zrozumieniem, że faktycznie jest w regionie texSectionZone (lub w innym), a zatem nie sprawdza pisowni. Może się to zdarzyć, jeśli wykonam wyszukiwanie w dokumencie lub dowolny rodzaj przeskoku, który pomija wiele linii (lub raczej strony).

Sposób, że doszedłem do wniosku, że to może być powód jest następujący: Wiem, że komenda

:echo synIDattr(synID(line("."),col("."),1),"name") 

Drukuje nazwę regionu/regionów jesteś w (I okazało się, że here), więc kiedy sprawdzanie pisowni nie działało, próbowałem tego i powiedział mi, że nie było go w żadnym regionie. Miejsca, w których działało, znajdowałem się w regionie, w którym powinien sprawdzić pisownię.

Do tej pory jedynym rozwiązaniem jest znalezienie najbliższej sekcji powyżej punktu, który powinien sprawdzić speller, a następnie ręczne przesunięcie kursora z powrotem do podanego punktu.

Idealnie byłoby mi się podobało rozwiązanie, które zapewniałoby, że tak się nie stanie, ale chciałbym również zadecydować o sposobie ręcznego "zaktualizowania" vim, w jakim regionie się znajduje, bez konieczności częstego przesuwania kursora . W drugim przypadku myślę o rozwiązaniu, które można zastosować do skrótu.

PS Nie miałem pewności, jak nazwać to pytanie. Jeśli wymyślisz tytuł, który lepiej wyjaśnia problem, możesz go zmienić.

Odpowiedz

17

syntax/tex.vim już używa dość skomplikowanych wzorów synchronizacji, aby zapewnić, że podświetlanie składni jest poprawne, ale w przypadku długich i złożonych dokumentów, może się to nie udać.

Najlepsze co możesz zrobić, to stara się zwiększyć zarówno wartości od

syn sync maxlines=200 
syn sync minlines=50 

(np do 2000 i 500). Umieść to w ~/.vim/after/syntax/tex.vim, aby nadpisać wartości domyślne.

syntax sync fromstart 

może dać najlepsze wyniki, ale może być zbyt wolny. Opis synchronizacji składni znajdziesz pod adresem :help :syn-sync.

+0

To było dokładnie to, czego szukałem. Próbowałem przeczytać w ': help sync-syn', ale muszę przyznać, że tak naprawdę nie rozumiem, jak to działa. W jaki sposób Vim aktualizuje składnię? Czy jest gdzieś wybór dotyczący tego. Może to jest mylące. To, o co pytam, to prawdopodobnie: jeśli uruchomię 'syntax sync fromstart', czy zaktualizuje on składnię z początku dokumentu _once_, czy też mówi Vimowi, że zawsze powinna składać syncronizację składni od początku? – Kristian

+0

Ten drugi; jeśli to nie zwolni Vima zbyt mocno, trzymaj się go! –

+0

OK. Większość miejsc w Internecie, gdzie ludzie to sugerują, sprawiają, że brzmi to tak, jak jest tylko raz. Jeśli uruchomię ': syn sync maxlines = 200' i': syn sync minlines = 50', czy następnie ustawię ją ponownie na normalną (domyślnie)? – Kristian

16

Sprawdzanie pisowni nie jest wykonywane, gdy nie zdefiniowano żadnej grupy składniowej (lub nie znaleziono jej w vim). Uważam, że warto włączyć sprawdzanie pisowni nawet dla niezdefiniowanej grupy (zobacz "toplevel" w dokumentacji składni vima).

Aby to zrobić, wpisz polecenie:

składnia pisowni Toplevel

w pliku: ~/.vim/after/syntax/tex.vim

Dodać plik, jeśli to robi nie istnieje.

To mi się udało.

+0

Polecenie 'syntax spell toplevel' zrobiło dla mnie –