如何在vim中映射<c-leader>?

10
我想映射ctrl+leader键,这是否可能?
尝试过以下命令: :nnoremap <c-leader> :CtrlP<CR> 但是它不起作用。
(ctrlp绑定与yankring绑定冲突)

+1 引用 ctrlp 插件,我之前不知道它,看起来非常有用。 - mMontu
3个回答

16

<Leader> 是Vim中的一个特殊键表示法,因此不能与诸如 C- 这样的修饰符组合使用。假设其默认设置是 \,您可以使用以下内容:

nnoremap <c-\> :CtrlP<CR>

1
一开始还以为会出问题,但是没有……完美运行。反斜杠仍然是一个 leader,而 c-\ 弹出了 ctrlp。非常感谢 :) - Arnis Lapsa

6

这里有两个问题:

  1. You didn't read CtrlP's documentation where you would have found this:

    Use this option to change the mapping to invoke CtrlP in Normal mode:
        let g:ctrlp_map = '<c-p>'
    
  2. <leader> is supposed to be a cross-platform alternative to using the common modifier keys (Alt, Ctrl, Shift, Cmd) in mappings.

    Normally, you would use <leader> in place of <Ctrl> as in:

    nnoremap <leader>p :CtrlP<CR>
    

在你的~/.vimrc文件中添加这行代码可能会解决你的问题:

let g:crtlp_map='<F11>'

虽然这不会有太大帮助,但以下是我为CtrlP做的映射:

nnoremap <leader>f :CtrlP<CR>
nnoremap <leader>b :CtrlPBuffer<CR>
nnoremap <leader>m :CtrlPMRUFiles<CR>
nnoremap <leader>t :CtrlPTag<CR>

已经阅读了。不明白第二个问题是什么。不会解决,因为不想将其映射到F11上。 - Arnis Lapsa
4
<F11>是一个例子,您可以将其映射到任何您想要或可用的键位上。第二个问题由Ingo解释得很清楚:<leader>是一个特殊的按键,无法与修饰键组合使用。我只是提供了正确使用的示例。 - romainl

0
例如,将 leader 键映射到空格,请尝试以下代码... < p > < code > let mapleader=" "


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接