如何創建一個接受數字作爲其一部分的正常模式命令?示例包括6>>
(縮進6行文本),2dw
(刪除2個字)和23yy
(將23行復制到複製緩衝區)。有沒有辦法使用nmap
或其他方式來做到這一點?在Vim中創建接受數字作爲參數的正常模式命令
具體來說,我想創建一個映射這樣的,如果我在正常模式下輸入
<leader>4bu
,Vim將
:4buf<CR>
如何創建一個接受數字作爲其一部分的正常模式命令?示例包括6>>
(縮進6行文本),2dw
(刪除2個字)和23yy
(將23行復制到複製緩衝區)。有沒有辦法使用nmap
或其他方式來做到這一點?在Vim中創建接受數字作爲參數的正常模式命令
具體來說,我想創建一個映射這樣的,如果我在正常模式下輸入
<leader>4bu
,Vim將
:4buf<CR>
您需要定義自己的操作,請參閱:
:help :map-operator
nnoremap
而不是nmap
。供給到最後正常模式命令號是通過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
變量訪問它。