Debuguj, jak vim wywołuje makeprg
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
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.
(Dzięki @ d-ben-knoble)
makeprg nie zawiera nazwy pliku, więc
:make %
powinien być użyty do lintowania bieżącego pliku