2012-05-03 7 views
6

Próbuję napisać wtyczkę, która wykona wywołanie system, które generuje plik na podstawie bieżącego bufora, a następnie otwiera wygenerowany plik w postaci vsplit lub już otwarte, zaktualizuje go, gdy plik źródłowy zostanie zmieniony.Otwórz plik edytowalny w vsplit, ale pozostań w oryginalnej pozycji w vimscript

Mam kod do punktu, w którym generuje plik i otwiera/aktualizuje podział, ale problem polega na tym, że po pierwszym otwarciu podziału fokus przechodzi do podziału i kiedy aktualizuje pozycję kursora na plik źródłowy przeskakuje na górę strony.

Oto, co próbuję, każda pomoc byłaby bardzo doceniana.

execute 'keepjumps silent ! ' . s:cmd . ' ' . s:src_file . ' > ' . s:dst_file 

if exists("s:outputbufnr") && bufexists(s:outputbufnr) 
    execute 'keepjumps ' . bufwinnr(s:outputbufnr) 
else 
    " execute "keepjumps vnew " s:dst_file 
    execute "keepjumps rightbelow vertical new " . s:dst_file 
    let s:outputbufnr=bufnr(s:dst_file) 
endif 

Z tego co ja chociaż keepjumps należy powrocie kursor do poprzedniej pozycji, jednak, że nie wydaje się być przypadek.

Odpowiedz

3

To brzmi jak idealne zastosowanie w oknie podglądu w vim. Po otwarciu pliku w oknie podglądu (:pedit /path/to/file) fokus nie jest odbierany z bieżącego okna. Możesz także przeskoczyć bezpośrednio do okna podglądu, gdy zajdzie taka potrzeba, jeśli potrzebujesz. Możesz również zamknąć okno podglądu z dowolnego miejsca dzięki :pclose. Jeśli plik się zmienił i chcesz zobaczyć aktualizacje, możesz ponownie uzyskać :pedit /path/to/file, aby uzyskać aktualizacje.

Inną małą zaletą, nawet jeśli masz plik w oknie podglądu, możesz nadal opuścić vim zwykłym :q zamiast :qa.

+0

Tak, wydaje się, że to właśnie wykorzystuje NERDTree, teraz muszę po prostu dowiedzieć się, jak otworzyć go pionowo, a nie poziomo. – JaredMcAteer

+0

@ OryginalSyn 'vert pedit' – Benj

+0

@Benj Powinienem to sobie uświadomić ... dzięki. – JaredMcAteer

1

Podejrzewam chcesz użyć wincmd p po podziale, to będzie można umieścić z powrotem w poprzednim oknie byłaś w.

+0

Naprawiono początkowe otwarcie pliku, ale część aktualizacyjna przeskakuje do drugiej linii pliku źródłowego. Jakieś pomysły? – JaredMcAteer