Подтвердить что ты не робот

Как использовать pylint в vim

Я не хочу устанавливать другой плагин, например pylint.vim,

И сегодня я решил использовать vim edit python вместо pydev, который является плагином eclipse. Но у меня проблемы.

Я добавил это в мой vimrc

autocmd BufWritePost *.py !pylint <afile>

но pylint не содержит имя файла на выходе

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

shell return 2

поэтому он не может перейти к строке 22, поэтому я использую sed change output

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

он возвращает:

mymodule.py:22: E: : invalid syntax

но без оболочки return 2 vim. поэтому он все равно не может перейти к этой линии. vim считает его успешно скомпилированным

========================= Новый комментарий =========== Вызвать функцию в команде Vims` autocmd`

Я думаю, может быть, я должен использовать команду make и установить makeprg, поэтому я использую ниже config

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

когда я сохраняю, vim возвращает:

************* 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 
4b9b3361

Ответ 1

почему так сложно с sed, который просто работает правильно на Linux? Попробуйте следующее:

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

Ответ 3

наконец, я сам разрешаю это. Я бы хотел поделиться с вами парнями. 2 строки в vimrc.

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

Ответ 4

вы можете попробовать запустить epylint вместо pylint.

epylint (поставляется с pylint) - это тот, который используется в emacs (с flymake). Он имеет несколько изменений, особенно в отношении обработки пути, для получения дополнительной информации см. Docstring в начале pylint/epylint.py. Это может помочь вам и в vim.

Sidenote: я не пользователь vim для программирования самостоятельно, но pylint.vim по-прежнему кажется достойным вариантом. Но я не буду подвергать сомнению ваши предпосылки.

Ответ 5

autocmd FileType python let & makeprg = '/usr/local/bin/pylint%

autocmd BufWritePost *.py make

autocmd FileType python let & makeprg = '/usr/local/bin/pyflakes%

autocmd BufWritePost *.py make