使用vim中的另一个命令映射命令

时间:2011-10-11 23:37:21

标签: vim macvim

只是尝试使用较短的版本(\ b)重新映射命令以打开bufferexplorer(\ be)。 我的尝试是:

map <leader>b <ESC><leader>be<CR>

毋庸置疑,这不起作用。有什么帮助吗?

3 个答案:

答案 0 :(得分:0)

为什么你有<CR>?您的映射将调用bufexplorer并立即退出它,在光标下选择缓冲区(它是当前缓冲区,不是吗?)(我可能会误以为我只使用bufexplorer几个小时)。正确的是

map <leader>b <C-\><C-n><leader>be

我还建议将<Esc>替换为<C-\><C-n>无条件退出正常模式而不发出哔哔声,它也可用于丢弃寄存器和计数。

请注意,mapleader变量必须与bufexplorer定义其<leader>be映射时的状态相同。

答案 1 :(得分:-1)

原始命令本身可能只是映射到命令行模式命令。我在BufExplorer的帮助中查找了\be,它说另一种调用方式是:BufExplorer。请尝试以下方法:

noremap <silent> <leader>b :BufExplorer<CR>

或者nmap而不是map,具体取决于您的需求。

答案 2 :(得分:-1)

由于默认的领导者代码为\,您只需

map <leader>b <ESC>\be<CR>

但如果您关心实际的领导者符号值,请尝试类似

的内容
:execute 'map <leader>b <ESC>' . (exists('mapleader') ? mapleader : '\') . 'be<CR>'

其中,(exists('mapleader') ? mapleader : '\')替换了相应的领导者符号(请参阅:help mapleader)。

注意:如果在此映射命令之后更改mapleader,则映射将无效