이 기본 제공 작업을 수행하려면 상당한 양의 작업이 필요하지만 Unite.vim 플러그인을 사용하여 매우 간단한 작업을 수행 할 수 있다고 생각합니다 . 다양한 소스에서 메뉴를 작성하기위한 통합 인터페이스를 제공합니다. (실제로 일부는 CtrlP를 Unite로 대체했습니다 .) Unite 설명서의이 예제 (또는 :help g:unite_source_menu_menus
Unite를 설치 한 후에 살펴보십시오 )는 기본 명령 메뉴를 만드는 방법을 자세히 설명합니다.
이 문서에 이어 명령 메뉴를 제공하는 간단한 예를 제시했습니다. 데모 목적으로, NERDTree (NERDTree 플러그인에서)를 열고 git blame (fugitive.vim 플러그인에서)을 표시하고 프로젝트에서 TODO를 grepping하는 명령을 사용하여 설정했습니다 (내장 사용 :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
매핑에 대한 옵션 (퍼지 검색 같은) 모드를 좁혀의 메뉴 출발을합니다.