2015-09-30 1 views
2

Я использую плагин ctrlP.Как настроить отображения внутри приглашения CtrlP - VIM

Согласно ctrlp's doc я должен иметь возможность переназначить как этот

let g:ctrlp_prompt_mappings = { 'PrtSelectMove("k")': ['<c-u>', '<up>'] } 
    let g:ctrlp_prompt_mappings = { 'PrtSelectMove("j")': ['<c-d>', '<down>'] } 
    let g:ctrlp_prompt_mappings = { 'PrtDelete()'  : ['<c-k>', '<del>'] } 
    let g:ctrlp_prompt_mappings = { 'PrtExit()'   : ['<c-l>', '<esc>'] } 

Но это не работает, я попробовал несколько вариантов - по-прежнему получать тот же результат.

Я хочу, чтобы перераспределить эти четыре линии (from doc):

\ 'PrtDelete()':   ['<del>'], 
\ 'PrtSelectMove("j")': ['<c-j>', '<down>'], 
\ 'PrtSelectMove("k")': ['<c-k>', '<up>'], 
\ 'PrtExit()':   ['<esc>', '<c-c>', '<c-g>'], 

+++ +++ UPDATE

let g:ctrlp_prompt_mappings = { 
    \ 'PrtDelete()': ['<c-k>', '<del>'], 
    \ 'PrtExit()': ['<esc>', '<c-l>', '<c-g>'], 
    \ 'PrtSelectMove("k")': ['<c-u>', '<up>'], 
    \ 'PrtSelectMove("j")': ['<c-d>', '<down>'], 
    \} 

Только <c-u> делает работу. <c-k>, <c-l>, <c-d> не работает.

когда я :echo g:ctrlp_prompt_mappings

{'PrtDelete()': ['<c-k>', '<del>'], 'PrtSelectMove("j")': ['<c-d>', '<down>'], 'PrtExit()': ['<esc>', '<c-l>', '<c-g>'], 'PrtSelectMove("k")': ['<c-u>', '<up>']} 

+++ +++ UPDATE2

let g:ctrlp_prompt_mappings = { 
    \ 'PrtExit()': ['<c-l>', '<esc>'], 
    \ 'PrtSelectMove("k")': ['<c-u>', '<up>'], 
    \ 'PrtSelectMove("j")': ['<c-d>', '<down>'], 
    \ 'PrtBS()': ['<c-k>', '<bs>', '<c-]>'], 
    \ 'ToggleByFname()': [''], 
    \ 'PrtCurRight()': ['<right>'], 
    \} 

все работает. (<c-l>, <c-d>) начал работать, потому что я удалить их из

\ 'ToggleByFname()':  [''], 
    \ 'PrtCurRight()':  ['<right>'], 

ответ

3

Если скопировать Предложенное решение в буфер обмена,

let g:ctrlp_prompt_mappings = { 'PrtSelectMove("k")': ['<c-u>', '<up>'] } 
    let g:ctrlp_prompt_mappings = { 'PrtSelectMove("j")': ['<c-d>', '<down>'] } 
    let g:ctrlp_prompt_mappings = { 'PrtDelete()'  : ['<c-k>', '<del>'] } 
    let g:ctrlp_prompt_mappings = { 'PrtExit()'   : ['<c-l>', '<esc>'] } 

, а затем «источник» его с помощью :@+, вы заметите, что вам фактически переписывают переменную три раза, поэтому остается только последняя строка:

:echo g:ctrlp_prompt_mappings 

output: {'PrtExit()': ['<c-l>', '<esc>']} 

Было бы лучше, если вы последуете за ним e, описанные в документации:

*'g:ctrlp_prompt_mappings'* 
Use this to customize the mappings inside CtrlP's prompt to your liking. You 
only need to keep the lines that you've changed the values (inside []): > 
let g:ctrlp_prompt_mappings = { 
\ 'PrtBS()': ['<bs>', '<c-]>'], 
\ 'PrtDelete()': ['<del>'], 
\ 'PrtDeleteWord()': ['<c-w>'], 
\ 'PrtClear()': ['<c-u>'], 
\ 'PrtSelectMove("j")': ['<c-j>', '<down>'], 
\ 'PrtSelectMove("k")': ['<c-k>', '<up>'], 
... 
\} 

Каждый блок брекетов содержит словарь. Ваш подход определяет четыре разных словаря и присваивает им все одну и ту же переменную, в то время как форма, описанная в документации, определяет единицу с несколькими парами ключ/значение. Проверьте :help dict для получения дополнительной информации.

+1

@whitesiroi Рад, что я мог помочь :) – mMontu