2011-08-21 50 views
40

Tôi đang cố gắng kết hợp tính năng tự động hoàn tất trong Vim. Tôi đã sử dụng tính toàn vẹn của Vim cũng như Pydiction. Tuy nhiên, trong cả hai trường hợp thông điệp này bật lên:Vim tự động hoàn thành cho Python

Omni hoàn thành (^ O^N^P) Pattern không tìm thấy

Tôi đã thử Vim's Omnicompletion with Python just doesn't work. Nhưng điều này không giúp ích gì. Có cách giải quyết nào không?

+2

bạn có thấy liên kết này không? http://blog.dispatched.ch/2009/05/24/vim-as-python-ide/ – Efazati

+1

Tệp có được phát hiện dưới dạng tệp python không? Mở nó lên và chạy ': echo & ft'. Nếu điều này không trả lại "python" thì hãy thử thêm 'filetype plugin vào' vào vimrc của bạn và thử lại tất cả điều này. –

Trả lời

45

Hãy thử Jedi! Có một plugin Vim tại https://github.com/davidhalter/jedi-vim.

Nó hoạt động tốt hơn nhiều so với bất kỳ điều gì khác cho Python trong Vim. Nó thậm chí còn có hỗ trợ cho đổi tên, goto, vv Phần tốt nhất có lẽ là nó thực sự cố gắng để hiểu mã của bạn (trang trí, máy phát điện, vv Chỉ cần nhìn vào danh sách tính năng).

+2

Tôi đã thử điều này nhưng điều duy nhất tôi nhận được là hàng trăm lỗi. – pfnuesel

+1

Tôi cần phải biết các lỗi và ': ver' sau đó. Điều này có thể xảy ra nếu bạn không có vim với + python được cài đặt (ví dụ: một số phiên bản windows vim nhất định). –

+0

Lỗi: Vim: Bắt tín hiệu chết người SEGV Vim: Xong. Lỗi phân đoạn – pfnuesel

6

Tôi đã thử sự cố (không hoạt động đối với tôi) và sự thiếu hoàn toàn thông thường (quá giới hạn). Tôi nhìn vào Jedi như gợi ý nhưng thấy nó quá phức tạp để thiết lập. Tôi tìm thấy python-mode, mà cuối cùng hài lòng nhu cầu của tôi. Cảm ơn @klen.

+0

Đây là một trong đó làm việc cho tôi. Các công cụ khác quá phức tạp để cài đặt. – max

0

Tôi đã chạy trên máy Mac của mình bằng MacPorts vim với dấu + python. Vấn đề là các MacPorts vim sẽ chỉ liên kết với python 2,5 với + python, trong khi phần mở rộng của tôi đã được cài đặt theo python 2,7. Cài đặt các phần mở rộng bằng pip-2.5 đã giải quyết nó.

12

Điều này có thể là một lựa chọn tốt nếu bạn muốn hoàn thành python cũng như các ngôn ngữ khác. https://github.com/Valloric/YouCompleteMe

Hoàn thành python là dựa trên jedi giống như jedi-vim.

4

AFAIK có ba tùy chọn, mỗi nhược điểm của nó:

  1. youcompleteme: không thân thiện để cài đặt, nhưng hoạt động tốt đẹp nếu bạn quản lý để làm cho nó làm việc. Tuy nhiên python3không được hỗ trợ.
  2. jedi-vim: tên thú vị nhất, nhưng phá vỡ undo history của bạn.
  3. python-mode thực hiện nhiều thao tác tự động hoàn thành: gấp, kiểm tra cú pháp, đánh dấu. Cá nhân tôi thích kịch bản làm 1 điều tốt, vì chúng dễ quản lý hơn (và thay thế). Khác với hai tùy chọn khác, nó sử dụng rope thay vì jedi để tự động hoàn thành.

Python 3 và lịch sử hoàn tác (gundo!) là điều bắt buộc đối với tôi, vì vậy, tùy chọn 1 và 2 sẽ hết.

+0

Cảm ơn bạn đã chỉ ra những nhược điểm, điều này khiến cho việc lựa chọn trở nên dễ dàng hơn nhiều, vì tôi chia sẻ ý kiến ​​về Python 3 và hoàn tác. – Zelphir

+0

Dường như dây không hỗ trợ Python 3 (https://github.com/python-rope/rope/issues/57)? Làm thế nào để sử dụng chức năng tự động hoàn thành với chế độ python và dây? Cảm ơn. – Chad

2

Tại thời điểm này, youcompleteme cũng thực hiện Python3.

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