![如何向 vim 中的映射命令添加正则表达式?](https://linux22.com/image/1424581/%E5%A6%82%E4%BD%95%E5%90%91%20vim%20%E4%B8%AD%E7%9A%84%E6%98%A0%E5%B0%84%E5%91%BD%E4%BB%A4%E6%B7%BB%E5%8A%A0%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%EF%BC%9F.png)
我想要映射: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-^>
等等…