如何在CtrlP的提示符 - VIM中自定义映射

时间:2015-09-30 08:48:18

标签: vim ctrlp

我正在使用ctrlP插件。

根据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>'],

1 个答案:

答案 0 :(得分:3)

如果您将建议的解决方案复制到剪贴板,

| ID | Location | Warehouse |
|----|----------|-----------|
|  1 |   London |    Narnia |
|  2 |   Cyprus |     Metro |

,然后使用 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>']}

每个括号块都包含一个字典。您的方法定义了四个不同的字典,并将它们全部分配给同一个变量,而文档描述的表单定义了一个具有多个键/值对的表单。请查看 *'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>'], ... \} 以获取更多信息。