Hacer esto de forma inmediata requeriría una gran cantidad de trabajo, pero creo que puede hacer algo bastante sencillo utilizando el complemento Unite.vim . Proporciona una interfaz de integración para crear menús de varias fuentes. (De hecho, algunos incluso han reemplazado CtrlP con Unite ). Este ejemplo en la documentación de Unite (o eche un vistazo :help g:unite_source_menu_menus
, una vez que haya instalado Unite) detalla cómo crear un menú básico de comandos.
Siguiendo esa documentación, se me ocurrió un ejemplo simple que ofrece un menú de comandos. Para fines de demostración, lo configuré con comandos para abrir NERDTree (desde el complemento NERDTree), mostrando una culpa git (desde el complemento fugitive.vim) y grepping para TODOs en un proyecto (usando el incorporado :grep
). He definido una asignación para abrir el menú con <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>
Puede copiar esto en su vimrc
y editar la lista de comandos definidos por la matriz g:unite_source_menu_menus.my_commands.command_candidates
. Cada elemento de la matriz es una matriz del formulario [Label, Command]
.
En mi ejemplo, my_commands
fue un nombre que elegí para identificar mi menú. Puedes usar cualquier nombre que quieras.
¡Espero que esto ayude!
EDIT: Agregado -start-insert
y -ignorecase
opciones para el mapeo para hacer que el menú de inicio en el modo (como un difuso-búsqueda) estrechamiento.