Debuguj, jak vim wywołuje makeprg

Aug 26 2020

Próbuję ustawić pylint do pracy z :makepoleceniem w Vimie 8.2.

Mam ustawiony :compiler pylintale działa :makedaje mi komunikat pomocy pylint, więc niektóre argumenty wydają się być przekazywane nieprawidłowo.

:set makeprg? jest

makeprg=pylint --output-format=text --msg-template="{path}:{line}:{column}:{C}: [{symbol}] {msg}" --reports=no

Próbowałem uruchomić to polecenie bezpośrednio w terminalu (dołączając nazwę pliku) i zadziałało - wynikiem była lista błędów, a nie wiadomość pomocy.

Niestety nie widzę dokładnego polecenia, które vim próbuje wykonać. Jakieś wskazówki, co zrobiłem źle lub jak to debugować?

Chciałbym jak najbardziej trzymać się domyślnej funkcjonalności Vima i nie używać do tego żadnych wtyczek.

Odpowiedzi

3 filbranden Aug 26 2020 at 04:01

jak to debugować?

Możesz użyć :verbosepolecenia, aby zwiększyć szczegółowość określonego polecenia.

W tym konkretnym przypadku potrzebujesz poziomu gadatliwości powyżej 3, aby zobaczyć rzeczywistą komendę powłoki wykonywaną przez Vima , więc to powinno działać:

:4verbose make
Calling shell to execute: "pylint --output-format=text --msg-template="{path}:{line}:{column}:{C}: [{symbol}] {msg}" --reports=no  2>&1| tee /tmp/abcde12/3"

Jakieś wskazówki, co zrobiłem źle?

Jak @D. Ben Knoble zwrócił uwagę, że podczas wykonywania polecenia brakuje nazwy bieżącego pliku. Możesz to naprawić, przekazując go do :makepolecenia, za pomocą :make %, lub faktycznie możesz włączyć go %do makeprgsamego siebie, ponieważ rozszerzy się %przed uruchomieniem polecenia:

:let &makeprg = 'pylint --output-format=text --msg-template="{path}:{line}:{column}:{C}: [{symbol}] {msg}" --reports=no %'

Zwróć uwagę %na koniec wiersza poleceń. Jeśli włączysz %do makeprg, po prostu uruchomienie :makebędzie działać, aby uruchomić pylint na bieżącym pliku.

2 xaxa Aug 26 2020 at 03:37

(Dzięki @ d-ben-knoble)

makeprg nie zawiera nazwy pliku, więc

:make %

powinien być użyty do lintowania bieżącego pliku