2008-11-21 30 views
15

Omnicompletion đang hoạt động, nhưng nó tự động chèn kết quả đầu tiên.Có cách nào để thay đổi hành vi của menu omnicomplete không?

Điều tôi muốn làm là mở menu omnicomplete, sau đó có thể nhập để thu hẹp kết quả, sau đó nhấn enter hoặc tab hoặc khoảng trống hoặc thứ gì đó để chèn mục menu đã chọn.

Điều này có khả thi không?

Trả lời

0

Đây là hành vi hoàn thành Vim chung. Để có cái nhìn đầy đủ, bạn có thể làm

:he compl-current 

Nhưng đối với trường hợp cụ thể của bạn (mà bạn yêu cầu hoàn thành để được ở trạng thái 2 hoặc 3 (được mô tả trong các tài liệu trên). Bạn chỉ có thể sử dụng Backspace hoặc Control- H để nhảy từ trạng thái một trạng thái hai Trong trạng thái 2 bạn có thể thu hẹp tìm kiếm bằng cách gõ ký tự thường xuyên Vì vậy, để hoàn thành hoàn thành với hẹp:..

compl<C-X><C-P><BS>letion 

nó là hoàn toàn ngược lại, tôi biết, nhưng đó là cách nó hoạt động .

Chỉnh sửa: Bạn cũng có thể sử dụng phím mũi tên xuống Tead của Control-H hoặc Backspace, và nó có lợi ích của việc không xóa một ký tự.

16

Lệnh bạn đang tìm kiếm là:

:set completeopt+=longest 

Nó sẽ chèn tiền tố chung dài nhất của tất cả những đề nghị, sau đó bạn có thể gõ và xóa để thu hẹp hoặc mở rộng kết quả.

+1

Sau khi thực hiện điều đó, nhấn lại tab hoàn tất thay vì hoàn thành tiền tố chung dài nhất tiếp theo. Có cách nào làm được việc này không? –

+0

@AlexanderDuchene Bạn có thể có một plugin khác đang thực hiện việc này cho bạn. – Abdo

3
set wildmenu 
set wildmode=list:longest,full 

Tìm thấy here. Ngoài ra còn có một plugin tuyệt vời cho tất cả các nhu cầu hoàn thành của bạn được gọi là SuperTab continued.

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