如何自定义 CtrlP 提示符内的映射 - VIM
How to customize the mappings inside CtrlP's prompt - VIM
我正在使用 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>'],
+++更新+++
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>'],
如果您将建议的解决方案复制到剪贴板,
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>'] }
,然后 "source" 它使用 :@+
,你会注意到你实际上覆盖了变量三次,所以只剩下最后一行:
: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>'],
...
\}
每个大括号都包含一个字典。您的方法定义了四个不同的字典并将它们全部分配给同一个变量,而文档描述的形式定义了一个具有多个 key/value 对的单个字典。检查 :help dict
了解更多信息。
我正在使用 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>'],
+++更新+++
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>'],
如果您将建议的解决方案复制到剪贴板,
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>'] }
,然后 "source" 它使用 :@+
,你会注意到你实际上覆盖了变量三次,所以只剩下最后一行:
: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>'],
...
\}
每个大括号都包含一个字典。您的方法定义了四个不同的字典并将它们全部分配给同一个变量,而文档描述的形式定义了一个具有多个 key/value 对的单个字典。检查 :help dict
了解更多信息。