2010-10-01 11 views
18

Nie chcę zainstalować inną wtyczkę, jak pylint.vim,jak używać pylint w vim

A dzisiaj, zdecyduje się użyć vim edycji Pythona zamiast PyDev który jest plugin Eclipse. Ale mam problemy.

muszę dodać w moim vimrc

autocmd BufWritePost *.py !pylint <afile> 

ale pylint nie zawiera pliku w wyjściu

************* Module mymodule 
E: 22: invalid syntax 

shell return 2 

więc nie może przeskoczyć do linii 22, więc używam sed zmienić wyjście

autocmd BufWritePost *.py !pylint <afile> | sed 's/^\(\w*\):\s*\([0-9]\+\)/<afile>:\2: \1: /g' 

zwraca:

mymodule.py:22: E: : invalid syntax 

ale bez powłoki powrót 2 przez vim. więc nadal nie może przejść do tej linii. vim traktować je jako kompilacji z powodzeniem

========================= nowy komentarz =========== Call a function in Vim’s `autocmd` command

myślę, że może powinienem użyć zrobić komendę i ustaw makeprg, więc używam poniżej config

autocmd FileType python let &makeprg='pylint <afile> | sed s/^\(\w*\):\s*\([0-9]\+\)/<afile>:\2: \1: /g' 
autocmd BufWritePost *.py make 

kiedy zapisać Vim powroty:

************* Module count 
E: 3: invalid syntax 
(1 of 2): ************* Module count 
Error detected while processing BufWritePost Auto commands for "*.py": 
E492: Not an editor command: sed s/^\(\w*\):\s*\([0-9]\+\)/<afile>:\2: 
\1: /g 

Odpowiedz

25

dlaczego tak skomplikowane z sed, który działa poprawnie na Linuksie? Wypróbuj następujące:

set makeprg=pylint\ --reports=n\ --output-format=parseable\ %:p 
set errorformat=%f:%l:\ %m 
+0

. Właśnie tego chcę. ale co to znaczy%: p. a format błędu jest zmienną vim, jak może wpływać na pylint? –

+1

'%: p' oznacza użycie pełnej ścieżki pliku – idbrii

+4

Świetna odpowiedź. Ale - format -output jest teraz przestarzałą opcją w pylintu 1.0.0. Alternatywą jest użycie 'set makeprg = pylint \ --reports = n \ - msg-template = \" {path}: {line}: \ {msg_id} \ {symbol}, \ {obj} \ {msg} \ "\%: p' – JohnTESlade

3

wreszcie rozwiązać go samodzielnie. Chciałbym się z wami podzielić. 2 linie w vimrc.

autocmd FileType python let &makeprg='pylint %\|sed "s/^\(\w*\):\s*\([0-9]\+\)/%:\2:\ \1:\ /g"' 
autocmd BufWritePost *.py make 
+0

Używam odpowiedzi jceb –

+0

Dzięki, jestem w stanie z niej korzystać i szukam dłuższego czasu. Ale uważam, że powinna trochę zaktualizować. czy możemy podzielić ekran, jeśli pilster zgłosi jakikolwiek błąd. w tej chwili, jeśli jest to duży błąd i tracę te informacje. – user765443

+0

Jestem w stanie go użyć, ale chciałbym podzielić błąd, jeśli otrzymam jakikolwiek błąd, dzięki któremu uzyskałem – user765443

0

możesz spróbować uruchomić epylinta zamiast tylko pylint.

Epylint (dostarczany z pylintem) to ten, który jest używany w emacs (z flymake). Wprowadzono kilka zmian, szczególnie w odniesieniu do obsługi ścieżek, więcej informacji na ten temat znajduje się w dokumencie docstring na początku pliku pylint/epylint.py. To może ci pomóc w vimie.

Sidenote: Nie jestem użytkownikiem vima do programowania, ale pylint.vim nadal wydaje się być przyzwoitą opcją. Ale nie będę kwestionować twoich wymagań wstępnych.

0

autocmd FileType pyton niech & makeprg = '/ usr/local/bin/pylint%'

autocmd BufWritePost * .py zrobić

autocmd FileType pyton niech & makeprg = '/ usr/local/bin/pyflakes% '

autocmd BufWritePost *.py make