Виконання цього нестандартного режиму вимагає великої роботи, але я думаю, що ви можете зробити щось досить прямо, використовуючи плагін Unite.vim . Він забезпечує інтеграційний інтерфейс для створення меню з різних джерел. (Насправді, деякі навіть замінили CtrlP на Unite .) Цей приклад в документації на Unite (або подивіться :help g:unite_source_menu_menus
, як тільки ви встановите Unite) детально розповідає про те, як створити базове меню команд.
Дотримуючись цієї документації, я придумав простий приклад, який пропонує меню команд. Для демонстраційних цілей я встановив його командами для відкриття NERDTree (з плагіну NERDTree), показуючи вину git (з плагіну fugitive.vim) та прив'язку до TODO в проекті (використовуючи вбудований модуль :grep
). Я визначив відображення для відкриття меню <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>
Ви можете скопіювати це у свій файл vimrc
і відредагувати список команд, визначених масивом g:unite_source_menu_menus.my_commands.command_candidates
. Кожен елемент масиву - це масив форми [Label, Command]
.
У моєму прикладі my_commands
було ім’я, яке я вибрав для визначення свого меню. Ви можете використовувати будь-яке ім’я.
Сподіваюся, це допомагає!
РЕДАКТУВАННЯ: Додано -start-insert
і -ignorecase
параметри відображення, щоб зробити меню запуск у режимі звуження (як нечіткий пошук).