2011-06-18 65 views
11

enter image description hereLàm cách nào để nhận đề xuất tự động cho các tùy chọn mảng khi nhập Vim?

Hãy nói rằng tôi gõ

a = [1, 2] 

trong một file py trong vim và khi tôi gõ "a." và nhấn TAB, tôi muốn nhận được trình đơn gợi ý có liên quan đến danh sách.

Chỉnh sửa 1 để trả lời nhận xét của Robin: Tôi nghĩ rằng nó có thể trong vim, bởi vì có một plugin kiểm tra nếu mã python đã cho là mã hợp lệ (tôi không biết plugin được gọi là gì). Hãy xem:

enter image description here

Trả lời

7

các phiên bản gần đây của vim đi kèm với một kịch bản omnicompletion gọi pythoncomplete.

Mở ra một file python, và gõ

:set completefunc? 

để kiểm tra những gì các chức năng hoàn thành hiện nay là. Nếu bạn nhận lại

completefunc= 

thì hiện không có chức năng hoàn thành.Bạn có thể đặt pythoncomplete là chức năng hoàn thành bằng cách gõ

:set completefunc=pythoncomplete#Complete 

và bạn có thể thiết lập này là mặc định cho các file python sử dụng (trong vimrc của bạn)

autocmd FileType python set completefunc=pythoncomplete#Complete 

Bây giờ khi bạn đang ở trong vim , bạn có thể sử dụng omnicomplete sử dụng Ctrl + XCtrl + O và bạn sẽ nhận được một popup menu như hình dưới đây:

list completion

Bạn cũng có thể liên kết này để phím tab trong chế độ chèn với (trong vimrc của bạn):

inoremap <Tab> <C-x><C-o> 

Để tìm hiểu thêm về tương tác với các trình đơn thả xuống xuất hiện, hãy thử

:help ins-completion 
+0

Tôi nghĩ đó là câu trả lời. Tôi có một câu hỏi khác, mặc dù: "Làm cách nào để tự động thoát khỏi cửa sổ tài liệu bổ sung mở ra ở đầu ([Scratch] [Xem trước])?". –

+2

Kiểm tra: thiết lập completeopt ?. Tùy chọn 'xem trước' trong đó làm cho cửa sổ xem trước xuất hiện với chuỗi tài liệu trong đó. Nếu bạn đặt completeopt mà không xem trước, nó sẽ không còn xuất hiện nữa. – actionshrimp

+2

@Spiritwalker cũng xem http://info.birnamdesigns.com/wiki/Vim_close_preview_window_after_omnifunc_selectionđể biết mẹo tự động đóng cửa sổ xem trước khi bạn thoát chế độ chèn hoặc di chuyển con trỏ (tôi thích phương thức chèn) –

3

đã đọc một trong những bài đăng trên blog nhiều về việc thành lập Vim như một Python IDE. Here's one để giúp bạn bắt đầu. Đặc biệt, bạn quan tâm đến chức năng OmniComplete.

Điều này bị ràng buộc theo mặc định cho tổ hợp phím Ctrl-xCtrl-o nhưng bạn có thể rebind nó vào phím tab.

Lưu ý rằng nó không nhạy cảm với loại biến. Nó có thể hoàn thành cho bạn nếu bạn nhập:

string.<ctl-x><ctl-o> 

bạn sẽ nhận được danh sách các phương pháp đối tượng chuỗi. Nhưng nếu bạn làm như bạn mô tả trong một cái gì đó câu hỏi của bạn như:

x = "a string" 

x.<ctl-x><ctl-o> 

vim sẽ không biết rằng biến x giữ một chuỗi, và sẽ không có khả năng cung cấp một danh sách các phương pháp.

Để biết thông tin về omnicomplete:

:help omnifunc 
+0

vì vậy nó là không thể? –

+1

@Spiritwalker Nếu có thể, tôi không biết cách thực hiện. Tôi sẽ chào đón một câu trả lời khác có thể chứng minh tôi sai, bởi vì điều đó sẽ khá hữu ích. –

+1

Xem thêm http://www.mohdshakir.net/2007/12/27/enable-vim-code-python-auto-complete –

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