как использовать Pylint в VIM - PullRequest
23 голосов
/ 01 октября 2010

Я не хочу устанавливать другой плагин, например 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 и изменяю вывод

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

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

mymodule.py:22: E: : invalid syntax

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

========================= новый комментарий =========== Вызов функции в команде Vim `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 

Ответы [ 6 ]

29 голосов
/ 02 октября 2010

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

set makeprg=pylint\ --reports=n\ --output-format=parseable\ %:p
set errorformat=%f:%l:\ %m
15 голосов
/ 01 октября 2010

pylint.vim старое, вместо этого используйте синтакс

https://github.com/scrooloose/syntastic

3 голосов
/ 01 октября 2010

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

autocmd FileType python let &makeprg='pylint %\|sed "s/^\(\w*\):\s*\([0-9]\+\)/%:\2:\ \1:\ /g"'
autocmd BufWritePost *.py make 
1 голос
/ 03 августа 2018

Я бы рекомендовал использовать A.L.E (Asynchronous Lint Engine) https://github.com/w0rp/ale

Он поддерживает ряд подстилок и форматеров Python, включая pylint . Замечательно, что A.L.E поддерживает много других языков.

0 голосов
/ 17 мая 2017

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

0 голосов
/ 23 ноября 2010

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

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

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

...