Czy istnieje „dziennik środowiska uruchomieniowego Vima”?

130

Czasami próbuję dostosować / polecenie w moim vimrc. Wszystko wydaje się być poprawne, ale to po prostu nie działa.

Trudno jest wiedzieć, co się dzieje, kiedy vim się uruchamia, i wiedzieć, które polecenie zawiodło, czy nie, więc naprawdę trudno jest debugować, co może powodować problem w moim vimrc. Jest to metoda prób i błędów, która jest czasochłonna i naprawdę jest PITA. Na przykład mam problemy z wtyczką snipmate w niektórych plikach i po prostu nie mam pojęcia, jak wykryć problem.

Czy istnieje "dziennik uruchomieniowy" kiedy vim startuje, informujący, które polecenia wykonał, które zawiodły i takie? To by mi bardzo pomogło.

Ktoś nadal używa cię w systemie MS-DOS
źródło

Odpowiedzi:

163

uruchomienie vima z opcją -V [N] zrobi całkiem niezły dziennik runtime, tutaj N to poziom debugowania.

vim -V9myVim.log

utworzy dziennik debugowania poziomu 9 w bieżącym katalogu z nazwą pliku myVim.log

sleepynate
źródło
Podobało mi się oba podejścia Zyxa i Ciebie, ale według mnie Twoje podejście jest lepsze, ponieważ jest prostsze, tylko w cmd, i mogę ustawić ścieżkę do dziennika za każdym razem, gdy go uruchamiam i nie muszę „nadmuchiwać” „mój vimrc. Witamy w SO!
Ktoś nadal używa ciebie MS-DOS,
2
Zobacz także :h 'verbose'i :h :verbose.
Palec
Wydaje się, że MacVim nie obsługuje -Vopcji ani żadnej opcji wiersza poleceń.
emallove
otwiera to pusty bufor Vima bez nazwy pliku. Co następne?
Geoff Langenderfer
104

:messages pokazuje wszystkie ostrzeżenia, błędy i komunikaty informacyjne, które pojawiły się (prawdopodobnie na krótko) w linii statusu vima.

:echo errmsg wypisuje najnowszy komunikat o błędzie.

g<to kolejna funkcja, o której niewiele osób wie. Od :help g<:

g<Komenda może być używany, aby zobaczyć ostatnią stronę poprzedniego wyjścia polecenia. Jest to szczególnie przydatne, jeśli przypadkowo wpisałeś <Space>polecenie po naciśnięciu klawisza Enter.

Na przykład spróbuj, :!lsa następnie anuluj monit, a następnie naciśnij g<.

Justin M. Keyes
źródło
15

Umieść tę funkcję w .vimrc:

function! ToggleVerbose()
    if !&verbose
        set verbosefile=~/.log/vim/verbose.log
        set verbose=15
    else
        set verbose=0
        set verbosefile=
    endif
endfunction

Następnie utwórz katalog ~/.log/vimi zadzwoń, ToggleVerbose()aby się zalogować ~/.log/vim/verbose.log. Zwróć uwagę, że możesz złapać błąd „zmienna zagnieżdżona zbyt głęboko, aby wyświetlić”, który normalnie nie będzie się pojawiał tylko z powodu podniesienia poziomu szczegółowości.

ZyX
źródło
2

Nie sądzę, że jest dziennik wykonawcze, per se , ale można go uruchomić w trybie debugowania.
http://web.archive.org/web/20090323034339/http://www.troubleshootingwiki.org/Debugging_Vim_Scripts

Sójka
źródło
2
Wygląda na to, że ta strona została zhakowana czy coś. Dopóki nie zostanie to naprawione, zobacz wersję z pamięci podręcznej na web.archive.org/web/20090323034339/http:// ...
Mu Mind
Mam 403 zabronione
Frank Fang
1

Prawdopodobnie jest to sprzeczne ze wszystkim, co oznacza SO, ale oto, co robię: po prostu naciskam print screen, gdy pojawia się ostrzeżenie i patrzę na zdjęcie.

rzygać
źródło
Czy przycisk pauzy nie miałby podobnego efektu, gdyby nie zmarnowany papier?
Rook
Do tej pory nigdy nie wiedziałem, co robi klawisz pauzy. W każdym razie nie sądzę, żeby to coś
robiło
2
Terminale FWIW, * nix wstrzymają wyjście po naciśnięciu Ctrl-S i wznowią po Ctrl-Q.
joeytwiddle
1

Musiałem dodać „set nocp”, aby użyć funkcji „ToggleVerbose ()” po uruchomieniu w katalogu głównym z powodu & verbose

masuch
źródło