vim将键映射到需要参数的命令

时间:2015-03-11 19:46:10

标签: vim

作为标题,假设我必须在vim <command> <argument>中运行此命令。

.vimrc我设置let mapleader = ,

因此,在正常模式下,如果我键入,ab,则vim将运行命令<command> ab。如果我输入,xyz,那么vim将运行命令<command> xyz

怎么做?

2 个答案:

答案 0 :(得分:4)

当参数是灵活的(即你不能像在@ svlasov的回答中那样预定义一组映射)时,你可以定义一个保持在命令行模式的不完整映射,从而允许你完成命令<argument>。唯一的缺点是你必须在最后输入<Enter>(但是当参数完成时Vim会怎么知道呢?)

实施例

:nnoremap <Leader> :echo<Space>

请注意,使用纯<Leader>映射是不好的;你不能轻易拥有任何其他映射;更好地使用像<Leader>e这样的东西。

PS:You should use :noremap;它使映射不受重映射和递归的影响。

答案 1 :(得分:1)

<command>替换成真实的:

nmap <leader>ab :<command> ab<CR>
nmap <leader>xyz :<command> xyz<CR>