2011-04-06 80 views
0

如何創建一個接受數字作爲其一部分的正常模式命令?示例包括6>>(縮進6行文本),2dw(刪除2個字)和23yy(將23行復制到複製緩衝區)。有沒有辦法使用nmap或其他方式來做到這一點?在Vim中創建接受數字作爲參數的正常模式命令

具體來說,我想創建一個映射這樣的,如果我在正常模式下輸入

<leader>4bu 

,Vim將

:4buf<CR> 

回答

3

您需要定義自己的操作,請參閱:

:help :map-operator 
1
  1. 使用nnoremap而不是nmap。供給到最後正常模式命令
  2. 號是通過v:count可變訪問,因此,例如,下面的映射將提供的數字添加到緩衝器文本次數:

    nnoremap ,a a<C-r>=v:count<CR><Esc> 
    

    之所以20,a將添加20 20次是因爲20,a被改寫爲20a<C-r>...。爲避免您可能使用

    nnoremap ,a :<C-u>call feedkeys("a".v:count."\e", "n")<CR> 
    

    <C-u>將放棄ex命令的計數,但仍可從v:count變量訪問它。