创建在Vim中接受数字作为参数的正常模式命令

创建在Vim中接受数字作为参数的正常模式命令,vim,Vim,如何创建一个接受数字作为其一部分的普通模式命令?示例包括6>(缩进6行文本)、2dw(删除2个单词)和23yy(将23行复制到复制缓冲区)。有没有一种方法可以使用nmap或类似的工具来实现这一点 具体来说,我想创建一个映射,这样如果我输入 <leader>4bu 4bu 在正常模式下,Vim将正常工作 :4buf<CR> :4buf 您需要定义自己的运算符,请参阅: :help :map-operator 您需要定义自己的运算符,请参阅: :help :map-o

如何创建一个接受数字作为其一部分的普通模式命令?示例包括
6>
(缩进6行文本)、
2dw
(删除2个单词)和
23yy
(将23行复制到复制缓冲区)。有没有一种方法可以使用
nmap
或类似的工具来实现这一点

具体来说,我想创建一个映射,这样如果我输入

<leader>4bu
4bu
在正常模式下,Vim将正常工作

:4buf<CR>
:4buf

您需要定义自己的运算符,请参阅:

:help :map-operator

您需要定义自己的运算符,请参阅:

:help :map-operator
  • 使用
    nnoremap
    ,而不是
    nmap
  • 提供给最后一个正常模式命令的编号可通过变量
    v:count
    访问,因此,例如,以下映射将向缓冲区文本编号添加提供的编号:

    nnoremap ,a a<C-r>=v:count<CR><Esc>
    
    将放弃ex命令的计数,但仍可从
    v:count
    变量访问该计数

  • 使用
    nnoremap
    ,而不是
    nmap
  • 提供给最后一个正常模式命令的编号可通过变量
    v:count
    访问,因此,例如,以下映射将向缓冲区文本编号添加提供的编号:

    nnoremap ,a a<C-r>=v:count<CR><Esc>
    
    将放弃ex命令的计数,但仍可从
    v:count
    变量访问该计数