Làm việc ngoài luồng này sẽ đòi hỏi một lượng công việc khá lớn, nhưng tôi nghĩ bạn có thể làm điều gì đó khá đơn giản bằng cách sử dụng plugin Unite.vim . Nó cung cấp một giao diện tích hợp để tạo các menu từ nhiều nguồn khác nhau. (Trên thực tế, một số thậm chí đã thay thế CtrlP bằng Unite .) Ví dụ này trong tài liệu Unite (hoặc xem qua :help g:unite_source_menu_menus
, một khi bạn đã cài đặt Unite) chi tiết cách tạo một menu lệnh cơ bản.
Theo tài liệu đó, tôi đã đưa ra một ví dụ đơn giản cung cấp một menu các lệnh. Với mục đích trình diễn, tôi đã thiết lập nó với các lệnh để mở NERDTree (từ plugin NERDTree), hiển thị một lỗi git (từ plugin fugitive.vim) và grepping cho TODOs trong một dự án (sử dụng tích hợp :grep
). Tôi đã xác định một ánh xạ để mở menu với <Leader>c
.
# Initialize Unite's global list of menus
if !exists('g:unite_source_menu_menus')
let g:unite_source_menu_menus = {}
endif
# Create an entry for our new menu of commands
let g:unite_source_menu_menus.my_commands = {
\ 'description': 'My Commands'
\ }
# Define the function that maps our command labels to the commands they execute
function! g:unite_source_menu_menus.my_commands.map(key, value)
return {
\ 'word': a:key,
\ 'kind': 'command',
\ 'action__command': a:value
\ }
endfunction
# Define our list of [Label, Command] pairs
let g:unite_source_menu_menus.my_commands.command_candidates = [
\ ['Open/Close NERDTree', 'NERDTreeToggle'],
\ ['Git Blame', 'Gblame'],
\ ['Grep for TODOs', 'grep TODO']
\ ]
# Create a mapping to open our menu
nnoremap <Leader>c :<C-U>Unite menu:my_commands -start-insert -ignorecase<CR>
Bạn có thể sao chép này vào của bạn vimrc
và chỉnh sửa danh sách các lệnh được xác định bởi mảng g:unite_source_menu_menus.my_commands.command_candidates
. Mỗi mục của mảng là một mảng của biểu mẫu [Label, Command]
.
Trong ví dụ của tôi, my_commands
là một cái tên tôi đã chọn để xác định thực đơn của mình. Bạn có thể sử dụng bất kỳ tên nào bạn muốn.
Hi vọng điêu nay co ich!
EDIT: Đã thêm -start-insert
và -ignorecase
tùy chọn vào ánh xạ để làm cho menu bắt đầu ở chế độ thu hẹp (như tìm kiếm mờ).