我使用相对行号编辑文件。通常我想复制一条线,从上面的16行到当前位置。
在正常模式下,我会输入:"wb+"
但是当它是第14行时,它是:16kyy16jP
如何定义键映射/命令,以便能够在正常模式下输入14kyy14jP
或16LK
之类的内容,以达到相同的效果?
答案 0 :(得分:5)
16kyy16jP
多么浪费......您可以使用:help :t
代替:
:-16t.
:-14t.
答案 1 :(得分:3)
可能类似
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&#39;补丁)比我的更有意义。如果你想要一个映射,它可以是模式:
nnoremap <silent> µ :<c-u>exe '-'.v:count1.'t-1'<cr>
" which isn't much different than the previous answer.
答案 2 :(得分:1)
您可以映射函数调用,该函数调用接受输入参数。
function! YourMap(n)
exec 'normal! '.a:n.'-Y'.a:n.'+P'
endfunction
nnoremap <leader>c :call YourMap(input('lines:')) <CR>
按<leader>c
,然后输入相对行号,应完成复制/粘贴。
<leader>c
是映射键,您可以将其更改为其他键组合。