如何向 vim 中的映射命令添加正则表达式?

如何向 vim 中的映射命令添加正则表达式?

我想要映射:b<buffer_number><cr><leader>b<buffer_number>。我有:

nmap <leader>b :b

这还不够,因为我还得按Enter。我还尝试过:

nmap <leader>b :execute 'b' (v:count) <cr>

答案1

要使用[count],您可以定义:

nnoremap <leader>b :<C-u>execute 'b' v:count<cr>

有了这个,你必须前置计数,例如4<Leader>b,这也与其他 Vim 命令一致。<C-u>删除自动添加的范围。

尾随计数的问题在于确定要查询多少位数字;然后,您要么需要指定所有数字(即而03不是3),要么查询另一个键来结束映射,要么等待超时。

这是一个仅查询单个数字的简单映射:

nnoremap <leader>b :execute 'b' nr2char(getchar())<cr>

(附言:你应该使用:noremap;它使映射不受重新映射和递归的影响。)

答案2

已经有了[count]<C-^>(或[count]<C-6>在某些键盘布局上):

2<C-^>
6<C-^>

等等…

相关内容