[英]How can I define a key mapping in vim and use the repeat number more than once?
我用相對行號編輯文件。 通常,我想將一行從上面的16行復制到當前位置。
在正常模式下,我將輸入: 16kyy16jP
但是當它是第14行時,它是: 14kyy14jP
如何定義按鍵映射/命令,使其能夠在正常模式下輸入16LK
或14LK
類的東西來獲得相同的結果?
16kyy16jP
真是浪費!您可以使用:help :t
代替:
:-16t.
:-14t.
可能像
nnoremap <silent> µ :<c-u>exe "normal! ".v:count1."kyy".v:count1."jP"<cr>
但是,老實說,我將在這里使用函數,因為不需要太多改動:
nnoremap <silent> µ :<c-u>call append(line('.')-1, getline(line('.')-v:count1))<cr>
請注意,由於:yank
,以下內容也適用
nnoremap <silent> µ :<c-u>exe '-'.v:count1.'y'<cr>P
編輯:我不知道:t
,@romainl的答案(帶有@Kent的補丁)比我的更有意義。 如果要映射,可以使用以下模式:
nnoremap <silent> µ :<c-u>exe '-'.v:count1.'t-1'<cr>
" which isn't much different than the previous answer.
您可以映射一個接受輸入參數的函數調用。
function! YourMap(n)
exec 'normal! '.a:n.'-Y'.a:n.'+P'
endfunction
nnoremap <leader>c :call YourMap(input('lines:')) <CR>
按<leader>c
,然后輸入相對行號,應完成復制/粘貼。
<leader>c
是映射鍵,您可以將其更改為其他鍵組合。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.