2013-03-08 9 views
7

Czy istnieje sposób automatycznego zastosowania autopep8 do pliku edytowanego w vim? Mam następujące vimrc.autopep8 z vim

Z góry dziękuję.

+0

Nie rozumiem twojego pytania. Chcesz zainstalować autopep8? Zastosuj reguły Pythona do pliku vimrc? – djs

+0

Chciałbym zainstalować go z "easy_install -ZU autopep8 pep8". Jednak wolałbym, gdybym mógł nacisnąć: w w Vimie i autopep8 naprawiłby wszystkie problemy, a może byłoby możliwe, aby wybrać problem w oknie QuickFix i uruchomić autopep8 tylko dla tego problemu. – user977828

Odpowiedz

3

Powinieneś być w stanie zrobić coś takiego, aby uruchomić bieżący plik przez autopep8:

:!autopep8 -i expand("%") 

Jeśli chcesz to zrobić automatycznie przy zapisie dla każdego pliku Pythona, można dodać do swojej vimrc:

if has("autocmd") 
    autocmd BufWritePost *.py !autopep8 -i expand("%") 
endif 
+0

"test.py" 12L, 106C napisane; :! autopep8 -i expand ("test.py"), a następnie otrzymałem polecenie autokomend E855, które spowodowało przerwanie polecenia. Czemu? – user977828

7

autopep8 jest zawarty w python-mode.

Call: PymodeLintAuto lub zmapować go:

" Automatically fix PEP8 errors in the current buffer: 
noremap <F8> :PymodeLintAuto<CR> 
+0

Czy mogę go również zmapować do uruchomienia z 'gqq'? Widziałem 'formatprg' z zewnętrznym poleceniem, takim jak' autopep8', ale nie wiem, jak to by działało z ': PymodeLintAuto' –

14

Prawidłowy sposób korzystania autopep8 ma polegać na vim "formatprg" ustawień. Więc dodać poniższą linię do vimrc:

au FileType python setlocal formatprg=autopep8\ - 

Teraz po wybraniu linii w Pythonie i uderzył gq (domyślne mapowanie chyba go odwzorować). Będzie filtrować linie przez autopep8 i zapisuje ładnie sformatowaną wersję w miejscu.

Powyższe ustawienie powoduje również, że działa z obiektami vim i vim ruchami, więc można ponownie wyrenderować akapit (linie wiersza kodu Pythona bez pustej linii między) przy użyciu gqap.

Aby zrobić cały plik można zrobić gggqG

myślnik „-”. Na końcu polecenia jest wymagane, aby autopep8 odczytać linie od standardu w

+2

+1: Rozważałoby to jako sposób vim. Dzięki za wskazanie tego. Nie jestem zwolennikiem automagicznie stosowania autop88 do plików przy pisaniu. Jeśli naciśniesz ZZ, nie wiesz, co się dzieje. Możesz dodać hak git-pre-commit, który uruchamia pep8 na twoich plikach źródłowych i przerwać commit, jeśli wykryto naruszenia stylu . [patrz tutaj w celu użycia nieuświadomienia] (https://github.com/githubbrowser/Pre-commit-hooks) – Hotschke

+0

Problem z tym rozwiązaniem polega na tym, że nie można używać standardowego formatuprp dla takich rzeczy, jak automatyczne dzielenie długich ciągów komentarzy między kwestia. Czy istnieje sposób na uzyskanie dostępu do tej funkcji? –

+1

Właśnie odkryłem, że nadal mogę używać wbudowanego przy użyciu polecenia gw –