2012-03-01 39 views
32

Tôi hơi bối rối về việc sử dụng các menu vim. Tôi có set wildmenuset wildmode=list:longest,full nhưng tôi không hiểu cho cuộc sống của tôi cách gọi và sử dụng tính năng hoàn thành. Tính năng này có hữu ích không? Lý do tại sao và làm thế nào? Những loại hoàn thành nào điều này làm chính xác? (nói cách khác, điều xác định nội dung danh sách hoàn thành)Cách sử dụng hiệu quả VIM: wildmenu

Bất kỳ mẹo và ví dụ nào sẽ được đánh giá cao.

+0

Tôi có 'set wildmenu'. Và thấy nó khá hữu ích. Tôi không phải tab nhiều nếu mục tôi không hiển thị trên thanh gợi ý. –

Trả lời

39

wildmenuwildmode được sử dụng để hoàn tất dòng lệnh. Cách đơn giản nhất để thử nó là :color <Tab>: dòng lệnh được mở rộng theo chiều dọc với danh sách tất cả các màu sắc có sẵn trên máy của bạn được hiển thị trong cột dải ngang mà bạn có thể điều hướng với <Tab> (chuyển tiếp) và <S-Tab> (lạc hậu).

Hành vi hoàn thành dòng lệnh và wildmenu phụ thuộc vào wildmode.

Xem :help wildmode:help wildmenu để biết thêm chi tiết.

+1

Vì vậy, những gì tôi nhận được là tự động hoàn thành các lệnh vim! Điều này có ý nghĩa hơn. Liệu nó có thể đi xa hơn? Có lẽ việc phát hiện cú pháp để tự động hoàn thành chức năng/tên biến trong các tệp .cpp? – skippr

+1

Không có combo 'wildmode' /' wildmenu' không thể làm gì ngoài việc hoàn thành dòng lệnh. Vim có một cơ chế khác để hoàn thành mã được gọi là "omni-completion". Đọc ': giúp omni-completion' để biết thêm thông tin. – romainl

4

:set wildmode=list:longest cho phép bạn mở rộng wildmenu

:set wildmenu phép bạn sử dụng <Left> hoặc <Righ> để điều hướng qua các danh sách compoetion.

+0

Có cách nào để nếu bạn nhấn tab, bạn có thể cuộn qua danh sách hoàn thành không? – hlin117

+1

chỉ cần ': set wildmenu = list: full'. –

+0

Linh: Điều này rất gần với những gì tôi muốn; Tôi có thể không rõ ràng với câu hỏi trước của tôi. Có cách nào để bạn có thể cuộn qua ** wildmenu ** mở rộng không? Chức năng này tương tự như zsh: http://i.stack.imgur.com/GvC4A.png – hlin117

25

Prolly sự lựa chọn tuyệt vời nhất, ít nhất đối với tôi là:

set wildmenu 
set wildmode=longest:full,full 

Điều đó có nghĩa rằng vào <Tab> đầu tiên nó sẽ hoàn thành vào chuỗi chung dài nhất và sẽ gọi wildmenu (một menu nhỏ theo chiều ngang và unobstructive). Vào ngày <Tab> tiếp theo, nó sẽ hoàn thành liên kết đầu tiên và sẽ bắt đầu xoay vòng qua phần còn lại. Bạn có thể chuyển qua lại với số lần lượt là <Tab><S-Tab>.

Một ví dụ tuyệt vời về cách wildmenu là rất hữu ích là để hoàn thành bộ đệm, sử dụng conf tôi được đăng và sau đó thử:

:b<Tab>

+0

Bạn có thể giải thích nó hoạt động như thế nào? Trang trợ giúp không nói gì về ':'. – saga

+0

Nó được mô tả trong trợ giúp vim: http://vimdoc.sourceforge.net/htmldoc/options.html#'wildmode '(nhưng bạn phải nhìn vào 'wildmode', và không phải là' wildmenu') –

9

ưa thích của tôi là

set wildmenu 
set wildmode=longest:list,full 

tab đầu tiên sẽ hoàn thành để chuỗi dài nhất và hiển thị danh sách đối sánh, sau đó tab thứ hai sẽ hoàn thành thành khớp đầu tiên và mở trình đơn wildmenu.

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