2013-03-08 26 views
7

Có cách nào để tự động áp dụng autopep8 vào một tệp đang được chỉnh sửa trong vim không? Tôi có vimrc sau đây.autopep8 với vim

Cảm ơn bạn trước.

+0

Tôi không hiểu câu hỏi của bạn. Bạn muốn cài đặt autopep8? Áp dụng các quy tắc python vào một tệp vimrc? – djs

+0

Tôi sẽ cài đặt nó với "easy_install -ZU autopep8 pep8". Tuy nhiên tôi muốn nếu tôi có thể nhấn: w trong Vim và autopep8 sẽ sửa chữa tất cả các vấn đề hoặc có thể nó sẽ có thể chọn một vấn đề trong cửa sổ QuickFix và cháy autopep8 chỉ cho vấn đề này. – user977828

Trả lời

3

Bạn sẽ có thể làm điều gì đó như thế này để chạy các tập tin hiện qua autopep8:

:!autopep8 -i expand("%") 

Nếu bạn muốn làm điều này tự động trên ghi cho mỗi file python, bạn có thể thêm video này vào vimrc của bạn:

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

"test.py" 12L, 106C được viết; :! autopep8 -i mở rộng ("test.py") và hơn tôi có E855 Autocommands gây ra lệnh để hủy bỏ. Tại sao? – user977828

7

autopep8 được đưa vào python-mode.

Gọi: PymodeLintAuto hoặc bản đồ nó:

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

Tôi có thể ánh xạ nó để chạy với 'gqq' không? Tôi thấy 'formatprg' với một lệnh bên ngoài như' autopep8' nhưng không chắc chắn nó sẽ hoạt động như thế nào với ': PymodeLintAuto' –

14

Cách đúng của việc sử dụng autopep8 là dựa vào vim "formatprg" Cài đặt. Vì vậy, bạn thêm dòng dưới đây để vimrc:

au FileType python setlocal formatprg=autopep8\ - 

Bây giờ khi bạn chọn dòng trong python và nhấn gq (lập bản đồ mặc định trừ khi bạn ánh xạ nó). Nó sẽ lọc các dòng thông qua autopep8 và viết phiên bản được định dạng độc đáo tại chỗ.

Cài đặt ở trên cũng làm cho nó hoạt động với các đối tượng vim và chuyển động vim, vì vậy bạn có thể đặt lại một đoạn (các dòng mã python không có dòng trống giữa) sử dụng gqap.

Để làm toàn bộ tập tin bạn có thể làm gggqG

Các gạch nối '-'. Ở phần cuối của lệnh là cần thiết để làm cho autopep8 đọc các dòng từ tiêu chuẩn trong

+2

+1: Tôi sẽ xem đây là một cách vim. Cảm ơn bạn đã chỉ ra điều này. Tôi không ủng hộ việc tự động áp dụng autope8 vào các tập tin khi viết. Nếu bạn nhấn ZZ, bạn không thấy những gì đang xảy ra. Bạn có thể thêm một git-pre-commit hook chạy pep8 trên sourcefile của bạn và hủy bỏ cam kết nếu vi phạm kiểu đã được phát hiện. [xem ở đây để sử dụng uncrustify] (https://github.com/githubbrowser/Pre-commit-hooks) – Hotschke

+0

Vấn đề với giải pháp này là bạn không thể sử dụng formatprg tiêu chuẩn cho những thứ như tự động tách chuỗi bình luận dài trên dòng. Có cách nào để truy cập chức năng này không? –

+1

Tôi thực sự chỉ phát hiện ra rằng tôi vẫn có thể sử dụng nội trang dựng sẵn bằng lệnh gw –

Các vấn đề liên quan