如何在vim中定义键映射并多次使用重复编号?

如何在vim中定义键映射并多次使用重复编号?,vim,mapping,Vim,Mapping,我用相对行号编辑文件。我经常想从上面的16行复制一行到当前位置 在正常模式下,我会输入:16KY16JP 但当它是第14行时,它是:14kyy14jP 如何定义一个键映射/命令,使其能够在正常模式下输入16LK或14LK之类的值,以获得相同的结果?可能类似于 nnoremap <silent> µ :<c-u>exe "normal! ".v:count1."kyy".v:count1."jP"<cr> 编辑:我不知道:t,@Romaill用@Kent's补

我用相对行号编辑文件。我经常想从上面的16行复制一行到当前位置

在正常模式下,我会输入:16KY16JP

但当它是第14行时,它是:14kyy14jP

如何定义一个键映射/命令,使其能够在正常模式下输入16LK或14LK之类的值,以获得相同的结果?

可能类似于

nnoremap <silent> µ :<c-u>exe "normal! ".v:count1."kyy".v:count1."jP"<cr>
编辑:我不知道:t,@Romaill用@Kent's补丁的回答比我的更有意义。如果需要映射,可以使用以下模式:

nnoremap <silent> µ :<c-u>exe '-'.v:count1.'t-1'<cr>
" which isn't much different than the previous answer.
可能是

nnoremap <silent> µ :<c-u>exe "normal! ".v:count1."kyy".v:count1."jP"<cr>
编辑:我不知道:t,@Romaill用@Kent's补丁的回答比我的更有意义。如果需要映射,可以使用以下模式:

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>
按c键,然后输入相关行号,复制/粘贴即可


c是映射键,您可以将其更改为其他组合键。

您可以映射接受输入参数的函数调用

function! YourMap(n) 
    exec 'normal! '.a:n.'-Y'.a:n.'+P'
endfunction
nnoremap <leader>c :call YourMap(input('lines:')) <CR>
按c键,然后输入相关行号,复制/粘贴即可

c是映射键,您可以将其更改为其他组合键

16KY16JP

真是浪费…你可以用:help:t代替:

16KY16JP

真是浪费…你可以用:help:t代替:


我也想到了:t,但他想把它贴在上面。线我们必须在t命令后执行-16t-1或-ddp。上面的16行to和jP让我觉得不是这样。但即使如此::-16t+。实际上,当你说t时。这意味着复制到当前行内容放在下面一行,因此如果你想在当前行上通过,你应该做:-16t-1。另外,如果选择模式是分块或分行的,请查看选择模式,因为这会影响您的粘贴。我也考虑过:t,但他希望粘贴到上方。线我们必须在t命令后执行-16t-1或-ddp。上面的16行to和jP让我觉得不是这样。但即使如此::-16t+。实际上,当你说t时。这意味着复制到当前行内容放在下面一行,因此如果你想在当前行上通过,你应该做:-16t-1。另外,如果选择模式是分块模式或分行模式,请查看您的选择模式,因为这会影响您的巴斯蒂风格,并对此进行了测试。谢谢我喜欢并测试了这个。谢谢