2009-08-21 11 views
6

Potrzebuję wykonać logiczne - i dwóch autocmd zdarzeń w vim. Zasadniczo, polecenie musi działać na InsertLeave, gdy TypeType ma tex. Wygląda na to, że to powinno działać (w .vimrc):Vim: Łączenie autocmd?

autocmd FileType tex :autocmd InsertLeave :w 

Ale tak nie jest. Zagnieżdżona opcja również nie pomaga, mimo że instrukcja wskazuje, że powinna.

Jej łatwe do zrobienia logiczną OR:

autocmd BufEnter,BufLeave ... 

nie musi być zbyt trudne do zrobienia logiczną AND.

+0

Należy przyjąć rozwiązanie ZyX jako odpowiedź, ponieważ rozwiązuje problem lokalnego bufora Eevee. – Profpatsch

+0

Zrobione, ale biorę na to twoje słowo. Wydaje mi się, że pamiętam problem lokalnych buforów, ale od lat nie pisałem lateksu i przeniosłem się na emacs 2 lata temu. –

Odpowiedz

8

Mam korektę @Eevee odpowiedź: aby prace AUTOCOMMAND dla tylko jeden bufor, należy użyć

augroup TexAutoWrite 
    autocmd FileType tex :autocmd! TexAutoWrite InsertLeave <buffer> :update 
augroup END 

patrz `: h autocmd-buflocal.

+0

To jest genialne. Teraz mogę ponownie renderować dokumenty asciidoc po przejściu na moją przeglądarkę. – Profpatsch

+1

Ouch. Problem: Drugi autocommand sumował * za każdym razem * przełączyłeś się do pliku tex. Po krótkim czasie vim zaczyna oszczędzać wiele razy z rzędu po wyjściu z trybu wstawiania. – Profpatsch

+1

@Profpatsch poprawione. – ZyX

4

Funkcja InsertLeave wciąż wymaga podania parametru.

Działa to dla mnie:

autocmd FileType tex :autocmd InsertLeave * :w 

Zauważ, że to zachowanie pozostanie jeśli później edytować niebędącą tex plik w tym samym buforze. Nie jestem pewien, czy istnieje prosty sposób, aby go usunąć podczas edycji czegokolwiek , ale pewnego rodzaju pliku.

+0

Rzeczywiście, działa jak urok. –

+0

Okrężnica nie jest naprawdę potrzebna. na przykład 'au FileType go au VimLeave * system wywoławczy (" killall gocode ")' – Meow

4

Możesz użyć opcji wzoru autocmndu.

autocmd InsertLeave *.tex w 
+0

Nie działa, gdy rozszerzenie pliku nie pasuje do typu pliku lub nie istnieje. Dzieje się tak, gdy robisz takie rzeczy jak porównywanie z plikami kopii zapasowych/tymczasowych lub jeśli lokalizacja pliku określa jego typ, np. pliki konfiguracyjne systemu. – Walf