簡體   English   中英

如何在vim中定義鍵映射並多次使用重復編號?

[英]How can I define a key mapping in vim and use the repeat number more than once?

我用相對行號編輯文件。 通常,我想將一行從上面的16行復制到當前位置。

在正常模式下,我將輸入: 16kyy16jP

但是當它是第14行時,它是: 14kyy14jP

如何定義按鍵映射/命令,使其能夠在正常模式下輸入16LK14LK類的東西來獲得相同的結果?

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM